我有一个setstate问题,我确定是上下文相关的,但不确定如何解决。它是由子组件将表单值传回父组件以存储在状态中引起的。
下面是相关的代码片段,在父类中调用了getFormState函数-最终将包含更复杂的逻辑来返回相关组件-但现在仅返回DCSubmissionForm组件并传递3个函数。
父类片段:
class DoorCount extends React.Component {
constructor(props) {
super(props);
this.state = {
shiftLog:[],
totalIn:0,
totalOut:0,
};
}
_inState(data){
console.log(data);
this.setState({
currentCount:data,
});
}
getFormState() {
return <DCSubmissionForm inState={this._inState} outState= .
{this._outState} onSubmit={this.setCountLog} />;
}
render() {
return (
<View style={[DCSTyles.IRContainer]} >
<View style={DCSTyles.IRBody}>
<ScrollView>
<View style={DCSTyles.countTitle}>
<Text style={DCSTyles.countTitleText}>Current Count:<Text style={DCSTyles.countTitleNo}> {this.getCurrentCount()}</Text></Text>
</View>
{this.getFormState()}
</View>
</ScrollView>
</View>
</View>
);
}
}
儿童课堂摘要: 子类(DCSubmisionForm包含一个简单的表单-我已显示了相关代码段-称为父函数的onChangetext传递了表单值。这由父inState函数记录,但setState嵌套函数会产生以下错误。>
class DCSubmissionForm extends React.Component {
render() {
return (
<View>
<View style={[FormStyles.form, DCSTyles.PrRow, {marginTop:0, paddingTop:0, flexDirection:'row'}]}>
<View style={FormStyles.formSplitHalf}>
<Text style={[FormStyles.formLabel, FormStyles.formlabelFirst ]}>1. Total In: </Text>
<View style={FormStyles.textInputBlock}>
<TextInput
placeholder="Enter Number"
style={FormStyles.textInputText}
autoCorrect={false}
returnKeyType='done'
keyboardType={'number-pad'}
onChangeText={(text) => this.props.inState(text) }
/>
</View>
</View>
错误:
任何人都可以帮助我确定我要去哪里了吗?
欢呼
答案 0 :(得分:-1)
您的_inState函数没有作为没有绑定的 >>> d = MultiValueDict({'name': ['Adrian', 'Simon'], 'position': ['Developer']})
>>> d['name']
'Simon'
>>> d.getlist('name')
['Adrian', 'Simon']
>>> d.getlist('doesnotexist')
[]
>>> d.getlist('doesnotexist', ['Adrian', 'Simon'])
['Adrian', 'Simon']
>>> d.get('lastname', 'nonexistent')
'nonexistent'
>>> d.setlist('lastname', ['Holovaty', 'Willison'])
的函数被传递。因此,this
和他自己的DCSubmissionForm
正在运行该函数。
更改:
this
收件人:
getFormState() {
return <DCSubmissionForm inState={this._inState} outState= .
{this._outState} onSubmit={this.setCountLog} />;
}