首页 > 解决方案 > 更新 state 中数组的状态

问题描述

我想根据所选值更改更新数组的状态。所以我boardStatusstate. 现在,当按下第二个 TouchableOpacity ( handleBoardPress(2)) 时,数组中只有第二个元素的状态{id:2, status:true}应该是true1 和 3 应该是false

我的代码:

class TestApp extends Component {
  constructor() {
    super()
    this.state = {
    boardStatus:[
        {id:1, status:false},
        {id:2, status:true},
        {id:3, status:true},
    ]
  };
 }

handleBoardPress=(id)=>{
    var id = id.toString();

    for(i=0, i!=id, i<=3, i++){     // How do I code this part?
        this.setState({
            boardStatus[i]: false
        })
    }   
}

render() {
return (
  <View>
    <TouchableOpacity 
        onPress={()=>this.handleBoardPress(1)}>
        <Text>One</Text>
    </TouchableOpacity>

    <TouchableOpacity 
        onPress={()=>this.handleBoardPress(2)}>
        <Text>Two</Text>
    </TouchableOpacity>

    <TouchableOpacity 
        onPress={()=>this.handleBoardPress(3)}>
        <Text>Three</Text>
    </TouchableOpacity>
  </View>
  );
 }
}

我如何对handleBoardPress函数进行编码?

标签: javascriptarraysreactjsreact-nativereact-state

解决方案


你可以这样做:

handleBoardPress = (id) => {
    var id = id.toString();
    var boardStatus = [];

    for (var i = 1; i <= 3; i++) {
        if (i == id) {
            boardStatus.push({id: i, status: true});
        } else {
            boardStatus.push({id: i, status: false});
        }
    }

    this.setState({boardStatus});
}

推荐阅读