当前位置: 首页 > 知识库问答 >
问题:

复选框保持React JS中组件的状态

何正德
2023-03-14

我有一个带有复选框的列表,我在活动列表中应用了相同的行为

var campaignsData = [{Name: "First"}, {Name: "Second"}, {Name: "Third"}];

var CampaignsRow = React.createClass({
    getInitialState: function() {
        return {checked: false};
    },
    checkedChange: function (e) {
        this.setState({checked: e.target.checked});
    },
    render: function() {
        console.log(this.props.data.Name, this.state.checked);
        return (
            <div className="row">
                <div className="cell checkbox">
                    <input type="checkbox" checked={this.state.checked} onChange={this.checkedChange}/>
                </div>
                <div className="cell campaignName">{this.props.data.Name}</div>
            </div>
        );
    }
});
var CampaignsTable = React.createClass({
    render: function() {
        var rows = this.props.campaigns.map(function(campaign) {
        return (
            <CampaignsRow data={campaign}/>
        );
    });

    return <div className="table">
        <div className="row header">
            <div className="cell checkbox"><input type="checkbox"/></div>
            <div className="cell campaignName">Name</div>
        </div>
        {rows}
    </div>
  }
});

ReactDOM.render(<CampaignsTable campaigns={campaignsData} /> ,document.getElementById('reactContainer'));

我的问题是,如果我先选中活动中的复选框,然后通过活动data.shift()(模拟从服务器下载新数据)删除第一项,然后再次渲染,则选中第二个活动中的复选框。

当它不附加到实例时,this.state的目的是什么。渲染工作正常,因为在控制台中打印的第二个真,所以this.state.checked被从第一运动移动到第二运动。

共有1个答案

呼延曜灿
2023-03-14

您应该向多个组件添加唯一的属性,以便React可以跟踪标识:

var rows = this.props.campaigns.map(function(campaign) {
    return (
        <CampaignsRow key={campaign.name} data={campaign}/>
    );
});
 类似资料:
  • 如果我打开活动,复选框始终保持选中状态,即使我取消选中它并离开活动或关闭应用程序,在重新启动活动后,它也将保持选中状态。 我已尝试使用以下代码段保存活动的状态。 复选框应始终处于用户离开它的状态(选中或未选中)。

  • 问题内容: 我有一个列表视图,大约有200个项目,我为复选框实现了一个自定义ArrayAdapter。我使用SparseBooleanArray来存储盒子的值。 所有这些工作正常,但我似乎无法以图形方式更新复选框的检查。如果用户单击,则选中该框。但是,如果我在代码中调用setChecked,则它对框本身没有影响(因此,即使其值为true,也不会对其进行打勾)。 我通过尝试将所有框都设置为true并

  • 我们使用的是Vaadin 8,我们有一个多选网格。在标题中有一个复选框,用作全选/取消全选复选框。问题是,窗口关闭后,标题复选框不会保持选中状态。E、 g.如果窗口打开,则选中标题复选框-

  • 作为帮助我学习ReactJS的一种方式,我正在设置一些应该很容易的东西,但事实证明对我来说有些棘手。 我想在ReactJS中设置一些托管复选框组。在HTML中,复选框“字段”实际上由许多共享公共名称属性的input type=“checkbox”元素组成。据我所知,这只是一种UI元素,应该适合ReactJS的组合特性。 我有两个组件: 首先,Checkbox Field是针对复选框组中的每个单独条

  • 我正在开发一个android烹饪应用程序(使用java),主页有一个回收器视图,其中填充了用户可以喜欢的食谱(类似于FaceBook帖子)。喜欢按钮是一个复选框,保存每个食谱的喜欢复选框状态的最佳方式是什么,所以当用户退出应用程序并再次登录时,他们不会多次喜欢同一个食谱。 在这种情况下,使用SharedReference是一个好主意吗? **im使用MySql作为数据库,不使用firebase。

  • 问题内容: 在我公司,我们正在将Web应用程序的前端迁移到ReactJS。我们正在使用create-react- app(更新为v16),而没有Redux。现在,我停留在一个页面上,该页面可以通过以下图像进行简化: 在MainContainer方法中,使用相同的后端请求检索由三个组件(SearchableList,SelectableList和Map)显示的数据。然后,此请求的结果存储在MainC