"№{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
我必须在输入用户名后单击跳过按钮才能启用按钮(变为绿色),我希望在输入时启用此功能
答案 0 :(得分:3)
就像Garrett的评论中提到的那样,该组件不会重新渲染,因为当您更改文本输入时,没有支柱或状态更改。您应该将功能组件更改为ES6类并将username
保存到状态。在TextInput's documention
我不确定您的技能水平,但如果您不熟悉React https://facebook.github.io/react/docs/state-and-lifecycle.html
,那么React关于状态和生命周期的文档是一本很好的解读