Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React native:listview的setstate,但对象仍返回未定义_Javascript_React Native - Fatal编程技术网

Javascript React native:listview的setstate,但对象仍返回未定义

Javascript React native:listview的setstate,但对象仍返回未定义,javascript,react-native,Javascript,React Native,从下面的代码中,我试图使数据源返回一个字符串,但它的返回未定义 constructor(props) { super(props) this.state = { uuid : this.props.navigation.state.params.uuid, facilityData: [], dataSource : [] }; } componentDidMount() { facilityStore.getFa

从下面的代码中,我试图使数据源返回一个字符串,但它的返回未定义

constructor(props) {
    super(props)
    this.state = {
        uuid : this.props.navigation.state.params.uuid,
        facilityData: [],
        dataSource : []
    };
}

componentDidMount() {
    facilityStore.getFacilityInfo(this.state.uuid)
        .then((res) => {
            this.setState({
                facilityData: res.data.data
            })
            {this.checkparticipants()}
        })
        .catch((error) =>{
            alert(error);
        })
};

checkparticipants(){
    var ds = new ListView.DataSource({rowHasChanged: (r1,r2) => r1!=r2});
    this.setState({
        dataSource : ds.cloneWithRows([
            {invitePlaceholder : "Participant"},
            {invitePlaceholder : "Participant"},
            {invitePlaceholder : "Participant"},
            {invitePlaceholder : "Participant"},
        ])
    })
    console.log(this.state.dataSource.invitePlaceholder)
}
我想根据listview的数量呈现textinput,但有一个错误:

TypeError:undefined不是对象


}
/>

那么我应该怎么做才能使对象不被代码定义?

setState
是一种异步方法。因此,为了使任何东西处于状态,我认为需要在设置状态后执行
checkParticipants
。这是作为
setState
的回调完成的:

facilityStore.getFacilityInfo(this.state.uuid)
.then((res) => {
  this.setState({ facilityData: res.data.data }, this.checkparticipants)
})
未调用,因为语法错误。 您的组件安装生命周期应为:

componentDidMount() {
    facilityStore.getFacilityInfo(this.state.uuid)
        .then((res) => {
            this.setState({
                facilityData: res.data.data
            },
            () => this.checkparticipants());
        })
        .catch((error) =>{
            alert(error);
        });
}

setState
是一种异步方法。完成状态设置后,调用
checkparticipants()

this.checkparticipants()
componentDidMount() {
    facilityStore.getFacilityInfo(this.state.uuid)
        .then((res) => {
            this.setState({
                facilityData: res.data.data
            },
            () => this.checkparticipants());
        })
        .catch((error) =>{
            alert(error);
        });
}