反应原生组件按钮不启用

时间:2017-08-24 21:38:02

标签: react-native redux

"№{0} - ({1})"

我对此安装表单有疑问。它具有用户名文本框我设置为用户输入的值。 import React from 'react'; import { View, Text, Button, TextInput, StyleSheet } from 'react-native'; const username = null; const SetupForm = ({onSubmit}) => { this.handleUsernameInput = (text) => { username = text; } this.handleSetupSubmit = (event) => { onSubmit(event, username); } this.handleSkipSubmit = (event) => { onSubmit(event, false); } return ( <View> <Text>Enter username:</Text> <TextInput placeholder="Username" maxLength={20} onSubmitEditing={this.handleSetupSubmit} onChangeText={this.handleUsernameInput} style={{ marginLeft: 20, marginRight: 20 }} /> <View> <Button title="Select" onPress={this.handleSetupSubmit} color="#34A853" disabled={username === null} /> <Button title="Maybe Later" onPress={this.handleSkipSubmit} color="red" /> </View> </View> ); } export default SetupForm;

对于我在onChangeText={this.handleUsernameInput}时设置了disabled的选择按钮,但是在文本框中输入文本时,这永远不会变为错误。

文本框设置为在输入时设置用户名,当我通过带有redux动作的键盘按钮按下提交时,我可以在控制台中看到它正常工作

username === null

我在这里做错了什么,当{type: "SETUP.REQUEST", username: "aaaaaaa"}方法设置文本时按钮没有启用?

示例gif: http://i.imgur.com/OuMkxHA.gifv

我必须在输入用户名后单击跳过按钮才能启用按钮(变为绿色),我希望在输入时启用此功能

1 个答案:

答案 0 :(得分:3)

就像Garrett的评论中提到的那样,该组件不会重新渲染,因为当您更改文本输入时,没有支柱或状态更改。您应该将功能组件更改为ES6类并将username保存到状态。在TextInput's documention

中有一个简单的例子

我不确定您的技能水平,但如果您不熟悉React https://facebook.github.io/react/docs/state-and-lifecycle.html

,那么React关于状态和生命周期的文档是一本很好的解读