react state中的数组,能否使用数组中某个元素绑定某个dom状态?

state里面的设置:this.state = {checkList:[]};

checkList开始就给它初始化了一个长度和JsonPage相同的数组:this.setState({checkList:checkSaveCount});//checkSavaCount长度和下面的JsonPage相同。

以下创建一组Checkbox,check属性设为this.state.checkList[i],并绑定onChangeClick事件。
for(var i=1;i<JsonPage.length;i++)
{
var menuArr=[];
var chk=React.createElement(Checkbox,{id:""+i+"",checked:this.state.checkList[i],onChange:this.onChangeClick.bind(this)},JsonPage[i]);请输入代码
menuArr[i]=React.createElement(Menu.Item,{key:""+i+""},chk);
}

那么问题来了, 如何在onChangeClick更新它本身状态,行得通吗,setState 怎么写,如果外面有一个全选checkbox,点击为全选时,setState这个checkList为一个所有值都为true的数组时,以上创建的组件的状态会全部更新吗?

阅读 3.9k
2 个回答

请不要用jQuery的思想来使用React。
React中没有dom的概念,一切皆数据。
你那代码应该是这样的:

class Example extends React.Component{
    constructor() {
        super(...arguments);
        this.state = {checkList: []};
    }
    
    render() {
        const {jsonPage = []} = this.props;
        let {checkList} = this.state;
        return(
            <div>
            {
                jsonPage.map(page => {
                    return(
                        <div key={page.id}>
                           <Checkbox checked={checkList.some(id => page.id === id)} onChecked={() => {                      
                               if(checkList.every(id => id !== page.id) {//选中
                                   checkList.push(page.id);              
                               } else {//取消
                                   checkList.splice(checkList.indexOf(page.id), 1);    
                               }
                               this.setState({checkList});
                           }}/>
                           <Menu />
                        </div>
                    );
                })
            }
            </div>
        );
    }
}

不能,react已经给你jsx语法了,不要再用原生思想去理解

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题