React Native-setState不是一个函数

时间:2019-04-26 09:26:10

标签: react-native

我有一个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>

错误:

enter image description here

任何人都可以帮助我确定我要去哪里了吗?

欢呼

1 个答案:

答案 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} />;
       }