Javascript 选中react redux中的所有功能复选框
我对react redux是新手。我试图使选择所有复选框功能与个人复选框选择也。选中所有单个复选框后,选择所有复选框。我已经有很多次这样做了,但我已经走错了方向 Action.js:-Javascript 选中react redux中的所有功能复选框,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,我对react redux是新手。我试图使选择所有复选框功能与个人复选框选择也。选中所有单个复选框后,选择所有复选框。我已经有很多次这样做了,但我已经走错了方向 Action.js:- const SELECT\u CHECKBOX=“SELECT\u CHECKBOX”; const SELECT_ALL_CHECK_BOX=“SELECT_ALL_CHECK_BOX”; export const selectCheckBox=(e,id)=>{ 返回{ 类型:选中复选框, 事件:e.targ
const SELECT\u CHECKBOX=“SELECT\u CHECKBOX”;
const SELECT_ALL_CHECK_BOX=“SELECT_ALL_CHECK_BOX”;
export const selectCheckBox=(e,id)=>{
返回{
类型:选中复选框,
事件:e.target.checked,
checkBoxID:id
}
}
export const selectAllCheckBox=(e)=>{
返回{
类型:选中所有复选框,
事件:e.target.checked,
}
}
Reducer.js:-
const checkBoxSelects={
selectAll:false,
复选框:[
{标签:“一”,勾选:false},
{标签:“两个”,选中:true},
{标签:“三”,勾选:假},
{标签:“四”,勾选:假},
]
}
导出常量checkBoxReducer=(状态=checkBoxSelects,操作)=>{
开关(动作类型){
案例选择复选框:
let checkBox=[…state.checkBox];
复选框[action.checkBoxID].checked=action.event
让selectAll=state.checkBox.every(item=>item.checked==true)?true:false
设newArray={
……国家,
选择全部,
复选框,
}
返回新数组;
默认:返回状态;
}
}
导出常量selectAllReducer=(状态=复选框Selects,操作)=>{
开关(动作类型){
案例选择所有复选框:
state.selectAll=action.event
state.checkBox.forEach(item=>item.checked=action.event)
返回{…状态};
默认:返回状态;
}
}
reducerIndex.js
import{checkBoxReducer,从“/reducer”中选择AllReducer};
从'redux'导入{combinereducer};
const rootreducer=组合减缩器({
checkBoxHandler:checkBoxReducer,
selectAllState:selectAllReducer,
})
Containet.js:-
从“React”导入React
从“/action/index”导入{selectCheckBox,selectAllCheckBox}
从'react redux'导入{connect};
功能容器(道具){
返回(
props.selectAllFn(e)}
/>
全选
{props.checkBoxData.map((项,i)=>{
返回(
props.onChangeSelect(e,i)}
/>
{item.label}
)
})}
)
}
常量mapStateToProps=(状态)=>{
返回{
checkBoxData:state.checkBoxHandler.checkBox,
slectAll:state.checkBoxHandler.selectAll,
}
}
const mapDispatchToProps=调度=>{
返回{
onChangeSelect:(e,i)=>dispatch(selectCheckBox(e,i)),
selectAllFn:(e)=>dispatch(selectAllCheckBox(e)),
}
}
导出默认连接(
MapStateTops,
mapDispatchToProps
)(CakeContainer)
导出默认rootreducer;
在您的Reducer.js
中,您设置状态的方式在我看来是不正确的。这两个组件的原始状态现在为
{
selectAll: false,
checkBox : [
{label:"one",checked:false},
{label:"two",checked:true},
{label:"three",checked:false},
{label:"four",checked:false},
]
}
这意味着在您使用combineReducers
之后,您的店铺的最终形状将如下所示
{
checkBoxHandler: {
selectAll: false,
checkBox : [
{label:"one",checked:false},
{label:"two",checked:true},
{label:"three",checked:false},
{label:"four",checked:false},
]
},
selectAllState: {
selectAll: false,
checkBox : [
{label:"one",checked:false},
{label:"two",checked:true},
{label:"three",checked:false},
{label:"four",checked:false},
]
}
}
我相信这不是你想要的。另外,请添加您想要实现的更多描述。感谢您的重播。我想在选中“全选”复选框后实现全选