Reactjs 反应不';将新的存储状态放入道具后无法重新渲染

Reactjs 反应不';将新的存储状态放入道具后无法重新渲染,reactjs,redux,Reactjs,Redux,我正在使用react和react redux。 我使用MapStateTops和mapdispatchtoprops来更新react组件的视图。 除了在redux存储更改后重新渲染不起作用外,一切都正常。动作调度工作正常,减速器工作正常,我可以控制台。记录存储状态并检查差异。 起初,我使用useDispatch和useSelector,一切正常。但我将其更改为mapdispatchtoprops和mapstatetoprops,以便将我的代码合并到我的项目队友的代码中 我试图将这个.props.

我正在使用react和react redux。 我使用MapStateTops和mapdispatchtoprops来更新react组件的视图。 除了在redux存储更改后重新渲染不起作用外,一切都正常。动作调度工作正常,减速器工作正常,我可以控制台。记录存储状态并检查差异。 起初,我使用useDispatch和useSelector,一切正常。但我将其更改为mapdispatchtoprops和mapstatetoprops,以便将我的代码合并到我的项目队友的代码中

我试图将这个.props.(whatineed)直接放在render()的return in组件中。据我所知,通过MapStateTrops,存储状态应该传递到组件的props中

import React,{Component}来自'React';
从“react bootstrap”导入{ToggleButton,ToggleButtonGroup};
从“react-redux”导入{useSelector,useDispatch};
从“../../../actions”导入{checked,notcked};
从“react redux”导入{connect};
从“./地址”导入本地文件;
导入“./index.css”;
常量mapStateToProps=状态=>{
返回{
localsel:state.selectedLocal.locals
}
}
让mapDispatchToProps=(dispatch)=>{
返回{
检查:(btn)=>调度(检查(btn)),
取消选中:(btn)=>调度(取消选中(btn))
}
}
类扩展组件{
建造师(道具){
超级(道具)
}
render(){
变量btnclicked=(e)=>{
让btnname=e.target.parentNode.getAttribute('id');
如果(例如,选中目标){
console.log('checked');
此.props.check(btnname);
};
如果(!e.target.checked){
console.log(“未检查”);
this.props.uncheck(btnname);
};
//在这里,我可以检查通过的存储状态
log(this.props.localsel);
// -------------------------------------------------
}
返回(
//这是我想看到我的商店状态的地方
{this.props.localsel.map(val=>{
返回{val}
})}
// --------------------------------------------
整个首尔
{local.Seoul.map((值,索引)=>{
返回({value})
})}
);
}
}
导出默认连接(mapStateToProps、mapDispatchToProps)(首尔);
此组件在父组件中导出,父组件为

import React,{Component}来自'React';
从'react bootstrap'导入{Jumbotron};
从“/本地人”进口{京畿、仁川、釜山、大邱、大田、世宗、光州、蔚山、江原、京南、京步、全南、全布、琼南、琼步、济州、其他国家};
从“./Locals”导入首尔;
导入“/Detailsrch.css”;
类Detailsrch扩展组件{
render(){
var localselect=(e)=>{
让选择器=document.getElementsByClassName('locals');
让选择器_local=document.getElementsByClassName('localdiv');
设i=0;
for(设j=0;j

键入 职业生涯


国家


); } }; 导出默认的Detailsrch;
这是我的减速机

从'redux'导入{combinereducer};
常量初始状态={
当地人:[]
}
const localSelector=(state=initialstate,action)=>{
开关(动作类型){
“已检查”案例:
if(动作有效载荷){
var arr=state.locals;
arr.push(动作有效载荷);
返回{
……国家,
当地人:啊
};
}否则{
返回状态;
}
“有缺口”的箱子:
if(动作有效载荷){
var arrnum=state.locals.indexOf(action.payload);
var arr=state.locals;
arr.拼接(arrnum,1);
返回{
……国家,
当地人:啊
};
}否则{
返回状态;
}
违约:
返回状态;
}
};
const rootReducer=combinereducer({
selectedLocal:localSelector
});
导出默认rootReducer;

我希望当道具值更改时,组件将重新渲染,并且我将在浏览器中看到更改。道具的价值发生了变化,但是在浏览器中什么也没有发生。

我看不到
Detailsrch
Seoul
中导入,但反之亦然
Seoul
Detailsrch
中导入,根据代码和注释,我可以看到
this.props.localsel
正在更改,这是在
Seoul
中使用的,所以渲染方法是
首尔
将被调用,因为我在那里
JSON.parse(JSON.stringify(propToClone));
var arr = state.locals;
arr.push(action.payload);