所需状态
我在原生react中有两个文本输入字段,每个字段的最终输入都需要追加到一个数组中。因此,我使用onSubmitEditing,因为如果我使用onChangeText,则用户输入的每个字符都会被附加到数组中。
错误
onSubmitEditing调用父组件中的函数并给出以下错误
"ExceptionsManager.js:84警告:出于性能原因,此合成事件已重复使用。如果您看到此情况,则表示您正在访问已发布/无效的合成事件的属性nativeEvent
。此属性设置为null。如果必须保留原始合成事件,请使用event.persist()。“
我尝试将函数移到同一个文件中,这并不理想,但我仍然返回此数组,而不是文本输入。数组中似乎没有任何有用的东西。
"SyntheticEvent“
代码
子组件
<TextInput
style={styles.signupInput}
onSubmitEditing={(val) => this.props.saveFriends(val)}
autoCorrect={false}
autoFocus={true}
placeholder={'friend one'}
placeholderTextColor={'white'}
/>
<TextInput
style={styles.signupInput}
onSubmitEditing={(val) => this.props.saveFriends(val)}
autoCorrect={false}
autoFocus={true}
placeholder={'friend two'}
placeholderTextColor={'white'}
/>
父组件
saveFriends = (val) => {
this.setState({
friends: [
...this.state.friends,
val
]
})
}
任何帮助都将不胜感激!
发布于 2019-02-28 04:22:43
因此,当您使用onSubmitEditing
属性时,传递给回调的参数是一个事件对象。为了访问文本并将其保存到数组中,您有两种解决方案:
第一个解决方案是访问事件的正确属性
<TextInput
style={styles.signupInput}
onSubmitEditing={(event) => this.props.saveFriends(event.nativeEvent.text)}
autoCorrect={false}
autoFocus={true}
placeholder={'friend one'}
placeholderTextColor={'white'}
/>
其次,使用Button
和onChangeText
在组件状态中保存输入的值:
<TextInput
style={styles.signupInput}
onChangeText={(val) => this.setState({val})}
autoCorrect={false}
autoFocus={true}
placeholder={'friend one'}
placeholderTextColor={'white'}
/>
<Button
onPress={() => this.props.saveFriends(this.state.val)}
/>
希望这能有所帮助。
发布于 2019-02-28 04:18:12
试试这个
onSubmitEditing={() => this.props.saveFriends(val)}
https://stackoverflow.com/questions/54913226
复制相似问题