状态更改时未调用函数

时间:2020-05-20 00:23:13

标签: javascript reactjs react-native

这是我的功能,用于在平面列表中呈现项目

renderItem = ({ item }) => {
    var integer = Number(item.key)

    return (
        <View>
        <Text style={styles.row}>
            {item.text} 
        </Text>

        <View style={{flexDirection:'row'}}>
          {this.createButtonYes(integer)}
          {this.createButtonNo(integer)}
          {this.answer(this.state.buttonStates[integer])}

        </View>

            <Text >__</Text>

        </View>
    )
  }

我所面临的问题是buttonStates状态更改时未调用this.answer的功能

 answer = (val) => {

    if(val){
      return(
        <Text style={{fontSize:20}}>YES</Text>
      )
    }else if(val==false){
      return(
        <Text style={{fontSize:20}}>NO</Text>
      )
    }else{
      return(
        <Text style={{fontSize:20}}>Not Answered</Text>
      )
    }
  }

我假设每次状态改变时都会调用该函数,但事实并非如此,有人解决方案吗?我想要的是每当按下按钮时状态都会发生变化,然后this.answer将采用更改后的状态并显示相应的状态。

谢谢

编辑: 按钮的代码:

buttonYesHelp = num =>{
        const newItems = [...this.state.buttonStates];
        newItems[num] = true;
        return newItems
      }
      createButtonYes = (num) => {

        return(
          <TouchableOpacity style={styles.buttonYes}

          onPress =
          {
            ()=> {{this.setState({ buttonStates:this.buttonYesHelp(num) })}}
            }>
              <Text style={styles.buttonTextStyle}>YES</Text>
          </TouchableOpacity>
        )
    }

num是我要在列表中更改的内容的索引

编辑: 我已经尝试了多种不同的方法,但是我一直遇到的问题是,当我渲染按钮时,我希望它对状态变量做出反应,但是即使状态发生变化,它也永远不会根据状态发生变化。 例如,在this.answer中,我假设它将根据buttonStates的状态返回文本,但它似乎只考虑了初始状态,而在之后没有任何作用

我能够使用具有相同语法的另一段代码来实现此目的,但是由于某些原因,这不起作用

0 个答案:

没有答案