javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

javascript-如何使用Redux刷新JWT令牌?

我们的React Native Redux应用程序使用JWT令牌进行身份验证。 有许多动作需要这样的令牌,并且许多令牌是同时分发的,例如 应用加载时。

例如。

componentDidMount() {
    dispath(loadProfile());
    dispatch(loadAssets());
    ...
}

loadProfileloadAssets都需要JWT。 我们将令牌保存在状态AsyncStorage中。我的问题是如何处理令牌过期。

最初,我将使用中间件来处理令牌到期

// jwt-middleware.js

export function refreshJWTToken({ dispatch, getState }) {

  return (next) => (action) => {
    if (isExpired(getState().auth.token)) {
      return dispatch(refreshToken())
          .then(() => next(action))
          .catch(e => console.log('error refreshing token', e));
    }
    return next(action);
};

}

我遇到的问题是loadProfileloadAssets操作将同时刷新令牌,因为在分发它们时令牌将过期。 理想情况下,我想“暂停”需要身份验证的操作,直到刷新令牌为止。 有没有办法用中间件做到这一点?

trans by 2020-08-10T11:22:21Z

错误:无法解析模块“ react-native-gesture-handler”

我尝试在react-native中使用Navigation。我加了:react-native-gesture-handler

但是它给我这样的错误:

错误:捆绑失败:错误:无法从C:\reactnative\proejectName\node_modules\@react-navigation\native\src\Scrollables.js解析模块react-native-gesture-handler:快捷模块映射中不存在模块react-native-gesture-handler

这是索引:

import { AppRegistry } from 'react-native';
import App from './App';
import { name as appName } from './app.json';

AppRegistry.registerComponent(appName, () => App);

这是app.js

import React from 'react';
import { createStackNavigator, createAppContainer, } from 'react-navigation';
import First from './src/Components/First';
import DescriptionPage from './src/Components/DescriptionPage';


const Navigation = createStackNavigator({
  First: {
    screen: First,
  },
  DescriptionPage: {
    screen: DescriptionPage,
  },
});

const App = createAppContainer(Navigation);

export default App;

这是package.json:

{
  "name": "ProjectName",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "react": "16.8.3",
    "react-native": "0.59.1",
    "react-native-sqlite-storage": "^3.3.10",
    "react-navigation": "^3.5.1"
  },
  "devDependencies": {
    "@babel/core": "7.4.0",
    "@babel/runtime": "7.4.2",
    "babel-jest": "24.5.0",
    "eslint-config-rallycoding": "^3.2.0",
    "jest": "24.5.0",
    "metro-react-native-babel-preset": "0.53.1",
    "react-test-renderer": "16.8.3"
  },
  "jest": {
    "preset": "react-native"
  }
}
trans by 2020-08-09T22:28:46Z

javascript-React Nati中需要图像模块出现问题

刚开始使用React-Native时,我遇到了一些需要静态图像的麻烦。

到目前为止,这是我非常基本的代码:

'use strict';

var React = require('react-native');
var {
  AppRegistry,
  StyleSheet,
  Text,
  Image,
  View,
} = React;

var buzz = React.createClass({
  render: function() {
    return (
      <View style={styles.container}>
        <Image source={require('image!bg')}  style={styles.bg}>
          <Text style={styles.welcome}>
            Welcome to Buzz! iOS interface to
          </Text>
          <Text style={styles.welcomeHeader}>Charityware</Text>
        </Image>
      </View>
    );
  }
});

var styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: 'transparent'
  },
  welcomeHeader: {
    fontWeight: '600',
    fontFamily: 'Helvetica',
    color: '#fff',
    fontSize: 50,
    alignSelf: 'center'
  },
  bg: {
    width: 400,
    height: 300,
    alignSelf: 'auto',

  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
  },
});

AppRegistry.registerComponent('buzz', () => buzz);

主要的麻烦领域是:

    <Image source={require('image!bg')}  style={styles.bg}>
      <Text style={styles.welcome}>
        Welcome to Buzz! iOS interface to
      </Text>
      <Text style={styles.welcomeHeader}>Charityware</Text>
    </Image>

打包并运行应用程序时,出现渲染错误:error image

我了解您需要在xcode中添加图像作为图像集,以便require调用找到该图像并为此添加了图像集:bg image

...但无济于事。 有人有什么想法吗? 我已经阅读了文档,并且似乎正在按照规定的方式进行操作。 谢谢!

trans by 2020-08-09T04:00:13Z

javascript-React中的useState()是什么?

我目前正在React中学习钩子概念,并试图理解以下示例。

import { useState } from 'react';

function Example() {
    // Declare a new state variable, which we'll call "count"
    const [count, setCount] = useState(0);

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}

上面的示例在处理程序函数参数本身上增加计数器。 如果我想在事件处理函数中修改计数值怎么办

考虑下面的例子

setCount = () => {
  //how can I modify count value here. Not sure if I can use setState to modify its value
  //also I want to modify other state values as well here. How can I do that
}

<button onClick={() => setCount()}>
  Click me
</button>
trans by 2020-08-07T04:57:48Z

本机反应-找不到模块“尽快/原始”

我已经开始了一个新的react-native项目,然后安装了react-native-maps,由于终端显示以下错误,我无法运行react-native-maps

module.js:550
    throw err;
    ^

Error: Cannot find module 'asap/raw'
    at Function.Module._resolveFilename (module.js:548:15)
    at Function.Module._load (module.js:475:25)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/home/valentino/Scrivania/lolo/node_modules/promise/lib/core.js:3:12)
    at Module._compile (module.js:653:30)
    at Module._compile (/home/valentino/Scrivania/lolo/node_modules/pirates/lib/index.js:83:24)
    at Module._extensions..js (module.js:664:10)
    at Object.newLoader [as .js] (/home/valentino/Scrivania/lolo/node_modules/pirates/lib/index.js:88:7)
    at Module.load (module.js:566:32)

如果我安装了react-native-maps,则会显示该消息,这是我用以下命令构建的项目的命令:

react-native init appName
cd appName
npm install react-native-maps --save
react-native run-android

我该如何解决这个问题?

难道我做错了什么?

谢谢您的帮助。

trans by 2020-08-06T23:41:31Z

反应导航:在Android上无法在抽屉上滑动

我一直在寻找解决方案很长时间,但是令人惊讶的是,我认为还没有人面对过它。 因此,我正在发布它。

我已经用React Navigation V3创建了一个简单的Drawer Navigator。 我已经添加了一个菜单图标,当我单击它时,抽屉将按原样显示。 但是,没有手势在起作用。 从左向右滑动不会做任何事情。 即使打开抽屉,在空白处点击也不会关闭抽屉。

这是我的代码:

import {
    createStackNavigator,
    createSwitchNavigator,
    createAppContainer,
    createDrawerNavigator
} from 'react-navigation';
import Home from './screens/Home';
import LoginForm from './screens/LoginForm';
import Articles from './screens/Articles';

const AuthStack = createStackNavigator({
    LoginScreen: LoginForm
});

const AppStack = createDrawerNavigator({
    HomeScreen: Home,
    ArticlesScreen: Articles
});

const RootNavigator = createSwitchNavigator(
    {
        Auth: AuthStack,
        App: AppStack
    },
    {
        initialRouteName: 'Auth'
    }
);

export default createAppContainer(RootNavigator);
trans by 2020-08-06T21:21:35Z

带有参数的react-native onPress绑定

所需的行为是将参数(文本)传递给onClick处理程序进行console.log,但似乎我在语法上做错了。

如果我将参数省略如下,则可以正常工作:

export default class Nav extends Component {
  componentDidMount() {
    this.props.pickNumber(3);
  }

  onPress() {
    console.log('FOOOBAAR');
  }
  render() {
    return (
      <View>
        <Text>####################</Text>
        <Text>Intro Screen</Text>
        <Text>Number: {this.props.numbers}</Text>
        <TouchableHighlight onPress={this.onPress.bind(this)}>
          <Text>Go to Foo</Text>
        </TouchableHighlight>
      </View>
    );
  }

}

但是,如果我想将参数传递给onPress处理程序,则会抱怨“无法读取未定义的属性” bind”。

export default class Nav extends Component {
  componentDidMount() {
    this.props.pickNumber(3);
  }

  onPress(txt) {
    console.log(txt);
  }
  render() {
    return (
      <View>
        <Text>####################</Text>
        <Text>Intro Screen</Text>
        <Text>Number: {this.props.numbers}</Text>
        <TouchableHighlight onPress={this.onPress('foo').bind(this)}>
          <Text>Go to Foo</Text>
        </TouchableHighlight>
      </View>
    );
  }

}

谢谢

加成:如果我将其更改为:

onPress={this.onPress.bind('foo')}

它也不起作用。

trans by 2020-08-06T17:03:07Z

[react-native]无法连接到Android上的开发服务器

当我运行“ react-native run-android”时,出现错误:“无法连接到开发服务器...”。

  • 打包服务器正在运行,我可以直接从浏览器访问它在移动设备中。
  • 我连接到计算机的Android设备已启用调试使用adb devices命令检查了它。
  • 我的android版本是4.4.4,所以我不能使用adb reverse命令。
  • 我已经在开发设置中设置了IP地址和端口。
  • USB调试已打开。
  • 操作系统是Windows 7。

那么如何解决红色错误屏幕问题呢?

Error screen

trans by 2020-08-04T12:39:06Z

在React Nati中保持全宽图像的宽高比

我有一个关于标签的查询。 我希望图像占据我使用alignSelf:stretch所做的整个父对象的宽度,但是我也希望高度根据图像的长宽比而定。 我怎样才能实现这样的目标?

因此,我想要一种将高度指定为图像宽度的比例的方法。

trans by 2020-07-29T01:33:38Z

CSS-显示:React Nati中的内联等效项

似乎我在创建显示时遇到了问题:与flexbox等效的内联样式。 到目前为止,我已经实现了以下目标(红线和蓝线由border函数控制,以帮助样式化):

current layout given code

使用此代码:

var React = require('react-native');
var {
    View, 
    ScrollView, 
    Image,
    StyleSheet,
    Text, 
    TouchableHighlight,
} = React;

//additional libraries
var Parse = require('parse/react-native'); //parse for data storage
Icon = require('react-native-vector-icons/Ionicons'); //vector icons

//dimensions
var Dimensions = require('Dimensions');
var window = Dimensions.get('window');

//dynamic variable components
var ImageButton = require('../common/imageButton');
//var KeywordBox = require('./onboarding/keyword-box');

module.exports = React.createClass({
    render: function() {
        return (
            <View style={[styles.container]}>
                <Image 
                    style={styles.bg} 
                    source={require('./img/login_bg1_3x.png')}>
                    <View style={[styles.header, this.border('red')]}>
                        <View style={[styles.headerWrapper]} >
                            <Image 
                                resizeMode={'contain'}
                                style={[styles.onboardMsg]}
                                source={require('./img/onboard_msg.png')} >
                            </Image>
                        </View>
                    </View>
                    <View style={[styles.footer, this.border('blue')]}>
                        <ScrollView 
                            horizontal={false}
                            style={styles.footerWrapperNC}
                            contentContainerStyle={[styles.footerWrapper]}>
                            {this.renderKeywordBoxes()}
                        </ScrollView>
                    </View>
                </Image>
            </View>
        );
    }, 
    renderKeywordBoxes: function() {
        //renders array of keywords in keyword.js
        //and maps them onto custom component keywordbox to show in the onboarding
        //component
        var Keywords = ['LGBQT', '#BlackLivesMatter', 'Arts', 'Hip-Hop', 'History', 
        'Politics', 'Comedy', 'Fashion', 'Entrepreneurship', 'Technology', 'Business', 
        'International', 'Health', 'Trending', 'Music', 'Sports', 'Entertianment'];

        return Keywords.map(function(keyword, i) {
            return <TouchableHighlight 
                style={styles.keywordBox} 
                key={i}
                underlayColor={'rgb(176,224,230, 0.6)'} >
                <Text style={styles.keywordText} >{keyword}</Text>
            </TouchableHighlight>
        });
    }, 
    //function that helps with laying out flexbox itmes 
    //takes a color argument to construct border, this is an additional 
    //style because we dont want to mess up our real styling 
     border: function(color) {
        return {
          borderColor: color, 
          borderWidth: 4,
        } 
     },
});

styles = StyleSheet.create({
    header: {
        flex: 2,
    }, 
    headerWrapper: {
        flex: 1, 
        flexDirection: 'column', 
        alignItems: 'center',
        justifyContent:'space-around',
        marginTop: window.height/35,
    },
    onboardMsg: {
        width: (window.width/1.3), 
        height: (452/1287)*((window.width/1.3)),
    },
    footer: {
        flex: 7, 
        marginTop: window.height/35,
    }, 
    //container style wrapper for scrollview
    footerWrapper: {
        flexWrap: 'wrap', 
        alignItems: 'flex-start',
    },
    //non-container style wrapper for scrollview
    footerWrapperNC: {
        flexDirection:'row',

    },
    container: {
        flex: 1, 
        alignItems: 'center', 
        justifyContent: 'center',
    }, 
    bg: {
        flex: 1,
        width: window.width, 
        height: window.height, 
    },
    actionButtonIcon: {
        fontSize: 20,
        height: 22,
        color: 'white',
    },
    keywordText: {
        fontFamily: 'Bebas Neue', 
        fontSize: 18, 
        padding: 6, 
        fontWeight: 'bold',
        color: 'white', 
        letterSpacing: 1.5,
        textAlign: 'center'
    }, 
    keywordBox: {
        backgroundColor: 'transparent',
        margin: 3, 
        borderColor: 'rgb(176,224,230, 0.6)', 
        borderWidth: 1,
    },
});

但我想实现这一目标:

Frame UI/UX

有任何想法吗?

编辑**答案:

需要将样式更改为以下内容:

//container style wrapper for scrollview
    footerWrapper: {
        flexWrap: 'wrap', 
        alignItems: 'flex-start',
        flexDirection:'row',
    },
    //non-container style wrapper for scrollview
    footerWrapperNC: {
        flexDirection:'column',
    },

因此,在scrollView的列和行中使用flexDirection可使孩子保持内联

trans by 2020-07-27T18:00:32Z

javascript-长时间设置计时器(即数分钟)

我想将Firebase auth与298466976579453030304和Signup一起使用react native,但出现黄色错误:

长时间设置计时器(即数分钟)是Android上的性能和正确性问题,因为它会使计时器模块保持唤醒状态,并且只有在应用程序处于前台时才能调用计时器。 有关更多信息,请参见([https://github.com/facebook/react-native/issues/12981)]。 (看到setTimeout的持续时间为111862ms)

我该如何解决?
我不想忽略这一点,我想了解这个错误并以最佳和标准的方式解决。
这是我的代码:

  export default class Login extends Component {
        constructor(props) {
            super(props)
            this.state = {
                email: '',
                password: '',
                response: ''
            }
            this.signUp = this.signUp.bind(this)
            this.login = this.login.bind(this)
        }
        async signUp() {
            try {
                await firebase.auth().createUserWithEmailAndPassword(this.state.email, this.state.password)
                this.setState({
                    response: 'Account Created!'
                })
                setTimeout(() => {
                    this.props.navigator.push({
                        id: 'App'
                    })
                }, 1500)
            } catch (error) {
                this.setState({
                    response: error.toString()
                })
            }
        }
        async login() {
            try {
                await firebase.auth().createUserWithEmailAndPassword(this.state.email, this.state.password)
                this.setState({
                    response: 'user login in'
                })
                setTimeout(() => {
                    this.props.navigator.push({
                        id: 'App'
                    })
                })

            } catch (error) {
                this.setState({
                    response: error.toString()
                })
            }

        }
        render() {
            return (
                <View style={styles.container}>
                    <View style={styles.containerInputes}>
                        <TextInput
                            placeholderTextColor="gray"
                            placeholder="Email"
                            style={styles.inputText}
                          //  onChangeText={(email) => this.setState({ email })}
                            onChangeText={(email) => {console.log(email);}}
                        />
                        <TextInput
                            placeholderTextColor="gray"
                            placeholder="Password"
                            style={styles.inputText}
                            password={true}
                            onChangeText={(password) => this.setState({ password })}
                        />
                    </View>
                    <TouchableHighlight
                        onPress={this.login}
                        style={[styles.loginButton, styles.button]}
                    >
                        <Text
                            style={styles.textButton}
                        >Login</Text>
                    </TouchableHighlight>
                    <TouchableHighlight
                        onPress={this.signUp}
                        style={[styles.loginButton, styles.button]}
                    >
                        <Text
                            style={styles.textButton}
                        >Signup</Text>
                    </TouchableHighlight>
                </View>
            )
        }
    }

我报告给Google Firebase团队:([https://github.com/firebase/firebase-js-sdk/issues/97)]

trans by 2020-07-27T08:18:28Z

如何在React Native中将图标放入TextInput中?

我正在考虑使用类似[https://android-arsenal.com/details/1/3941]的内容,在该图标中您可以按该图标将密码显示为纯文本而不是点。 但是,我找不到任何可以帮助我的自定义组件。

我不想在这种次要功能上花太多时间,所以我想问的是尚未尝试的任何事情:是否有我错过的自定义组件? 如果没有,是否有一种简单的方法可以将子级添加到TextInput? 还是应该让TextInput和Touchable并排?

trans by 2020-07-27T05:51:31Z

javascript-如何在React Native中添加按钮?

我对整个“没有CSS”的事情感到困惑,但是我理解为什么这样做是有益的。 我只想在屏幕中间放置一个按钮,但是我还不了解样式在React中的工作方式。 这是我的代码:

var tapSpeed = React.createClass({
  render: function() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>
          Tap me as fast as you can!
        </Text>
        <View style={styles.button}>
        !
        </View>
      </View>
    );
  }
});

var styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#FFCCCC'
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10
  },
  button: {
    textAlign: 'center',
    color: '#ffffff',
    marginBottom: 7,
    border: 1px solid blue,
    borderRadius: 2px
  }
});
trans by 2020-07-26T10:26:00Z

ios-React Native初始化特定版本

我将最新的项目升级到React Native 0.19,视频立即消失了。 如何创建具有特定版本的新项目? 我要在0.18.1版中初始化一个新项目。 我做了一些谷歌搜索,但找不到任何关于此的信息。

$ react-native init newproject --verbose

我猜我需要在该位置的某个地方添加@ 18.1,但无法正常工作。

trans by 2020-07-26T00:16:41Z

javascript-错误类型3。活动类{com.awesome_project / com.awesome_project.MainActivity}在本机响应中不存在(Android设备)

我使用以下命令创建了项目。

react-native init Awesome_Project

我已经使用以下命令启动了打包程序。

react-native start

我已经使用USB驱动器连接了Android移动设备。

我打开了另一个命令提示符,然后运行以下adb命令以确保仅连接了一个设备。

adb devices

我已经使用以下命令启动了该应用程序。

react-native run-android

我遇到了以下错误。

open: Permission denied
open: Permission denied
Starting: Intent { com.awesome_project/.MainActivity }
Error type 3
Error: Activity class {com.awesome_project/ com.awesome_project.MainActivity} does not exist.

提前致谢。

trans by 2020-07-25T16:59:35Z

React.createClass与扩展组件

两者之间有什么区别

var MyClass = React.createClass({...});

class MyClass extends React.Component{...}
trans by 2020-07-24T05:33:48Z

CSS-使用react-nati中的flex将项目粘贴到底部

假设这是布局:

<View style={styles.container}>
    <View style={styles.titleWrapper}>
        ...
        ...
    </View>
    <View style={styles.inputWrapper}>
        ...
        ...
    </View>

    <View style={styles.footer}>
        <TouchableOpacity>
            <View style={styles.nextBtn}>
                <Text style={styles.nextBtnText}>Next</Text>
            </View>
        </TouchableOpacity>
    </View>
</View>

我想使用页脚样式将视图放置在屏幕底部。 我尝试将alignSelf属性提供给页脚,但没有将其定位在底部,而是将其定位在屏幕的右侧。 如何使页脚项目坚持到底? 谢谢。

trans by 2020-07-19T03:49:40Z

android-在React Nati中保存敏感数据

我正在构建一个React Native应用程序,我需要保存一些敏感数据,例如令牌和刷新令牌。 显而易见的解决方案是使用AsyncStorage保存该信息。 问题是AsyncStorage的安全级别。

AsyncStorage提供了一种在本地存储令牌和数据的方法。 它可以 在某些方面与LocalStorage选项相比。 在全 生产应用程序,建议不要访问AsyncStorage 直接使用,而是使用抽象层,因为AsyncStorage是 使用相同的浏览器与其他应用共享,因此 不合理地从仓库中取出所有物品可能会损害 相邻应用程序的功能。

[HTTPS://AU TH0.com/blog/adding-authentication-to-react-native-using-劲舞团/]

在本机应用程序中,我将在Shared Preferences中以Shared PreferencesiOS在私有模式中进行AsyncStorage

对于我在React Native提供的文档中阅读的内容:

在iOS上,AsyncStorage由存储小值的本机代码支持 在序列化的字典中,更大的值在单独的文件中。 上 Android,AsyncStorage将根据具体情况使用RocksDB或SQLite 可用。

[HTTPS://Facebook.GitHub.IO/react-native/docs/A sync storage.HTML]

他们从不谈论这些数据的安全性。

最好的解决方案是为Android(在私有模式下使用Shared Preferences)创建一个模块,为iOS(使用钥匙串)创建另一个模块以保存敏感数据? 还是使用提供的AsyncStorage方法是安全的?

trans by 2020-07-18T20:14:38Z

javascript-如何声明与可为空的数字对应的PropType?

我正在寻找null

“这是必需的,它将是数字或为空”

换句话说,我现在拥有的是

PropTypes.number.isRequired

但是如果传入null值会发出警告,但我希望null是可接受的值。

trans by 2020-07-12T09:11:43Z

reactjs-在React Native项目中git应该忽略哪些文件夹?

我正在使用Facebook / React Native,当我运行git init时,我不知道node_modules文件夹应该忽略什么,

我应该提交所有iOS文件夹吗?

谢谢

trans by 2020-07-09T21:02:50Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 下一页 共14页