动态填充复选框并在react redux中维持复选框的状态

时间:2018-12-11 14:11:57

标签: javascript reactjs

我们已经通过调用api服务(通过提取)动态填充了复选框项。根据集合,我们将显示状态为选中的复选框。

如果我选中/取消选中复选框,如何为动态填充的复选框项目实现handlechange事件。

我想获取当前的复选框状态。我怎么得到

checkboxcontainer.tsx

       data.map(item => (
                      <label key={item.projectId} className="checkBoxcontainer">
 <CheckBox   name={item.projectName}  
                  checked={item.checked} handleChange={this.handleChange} />
                  {item.projectName}<span className="checkmark"/>

                      </label>

Redux:

const mapStateToProps=({projects} : ApplicationState) => ({
  data: projects.data
});


const mapDispatchToProps = (dispatch: Dispatch) => ({
  fetchProjects: bindActionCreators(fetchProjects, dispatch),
});


const ProjectListContainer = connect(mapStateToProps,mapDispatchToProps)(ProjectContainer);
export { ProjectListContainer as ProjectContainer }; 

手柄更改功能:

    handleChange(e :any) {
// how to maintain the checkbox state

    }



import * as React from 'react';
interface IPropTypes {
  type?: string,
  name: string,
  checked?: boolean,
  handleChange(event: any): void;
}

class CheckBox extends React.Component<IPropTypes,{}> {

  render() {
      return (
        <input type='checkbox' name={this.props.name} checked={this.props.checked} 
        onChange={ e => this.props.handleChange(e) }   />
      );
  }

}

1 个答案:

答案 0 :(得分:1)

我建议传递给Checkbox的handleChange函数如下所示:

handleChange={(e) => this.handleChange(e, item.projectId)} 然后在handleChange中,您可以获取是否选中了复选框,然后同时使用projectId和复选框的状态触发动作

const isChecked = event.target.checked; someAction(projectId, isChecked);

此操作应更改您的Redux存储中的数据