Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新React组件共享状态_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript 更新React组件共享状态

Javascript 更新React组件共享状态,javascript,reactjs,redux,Javascript,Reactjs,Redux,我有两个连接的项目列表。B列表有复选框。当我取消选中B列表中的某个元素时,列表中相应的元素应该被隐藏,但不幸的是渲染函数没有被调用。我使用减缩器更改应用程序的状态 我的问题是,在更改状态后不会调用render。由于点击事件由B列表处理,我可以强制更新该列表,但列表将保持不变 我如何处理这个连接 SelectableLinks选项(列表) import React,{PropTypes,Component}来自“React” 从“../components/Link”导入链接 从“../compo

我有两个连接的项目列表。B列表有复选框。当我取消选中B列表中的某个元素时,列表中相应的元素应该被隐藏,但不幸的是渲染函数没有被调用。我使用减缩器更改应用程序的状态

我的问题是,在更改状态后不会调用render。由于点击事件由B列表处理,我可以
强制更新该列表,但列表将保持不变

我如何处理这个连接

SelectableLinks选项(列表)
import React,{PropTypes,Component}来自“React”
从“../components/Link”导入链接
从“../components/LinkSelector”导入链接选择器
从“react bootstrap”导入{Popover,OverlyTrigger}
类SelectableLinksSection扩展组件{
renderPopup(){
返回(
)
}
render(){
if(this.props.links.length){
返回(
{
this.props.links.map(link=>{
返回
})
}
)
}
}
Link.propTypes={
标签:PropTypes.string.isRequired,
图标:PropTypes.string.isRequired,
url:PropTypes.string.isRequired,
text:PropTypes.string.isRequired,
隐藏:需要PropTypes.bool.isRequired,
widthClass:PropTypes.string.isRequired,
dividerClass:PropTypes.string.isRequired
}
导出默认链接;
[EDIT]SectionIdeas(列表容器)
import React,{Component,PropTypes}来自“React”
从'react redux'导入{connect};
从“../components/SelectableLinksSection”导入SelectableLinksSection
类扩展组件{
render(){
返回
}
}
SectionIdeas.propTypes={
cdn:PropTypes.string.isRequired,
标题:PropTypes.string.isRequired,
text:PropTypes.string.isRequired,
链接:PropTypes.array.isRequired,
显示:需要PropTypes.func.isRequired,
隐藏:需要PropTypes.func.isRequired
};
函数MapStateTops(状态){
返回{
cdn:state.data.cdn,
标题:state.data.ideas.title,
文本:state.data.ideas.text,
链接:state.data.ideas.links
};
}
导出默认连接(MapStateTops)(SectionIdeas)
[编辑]主容器
import React,{Component,PropTypes}来自“React”
从“redux”导入{bindActionCreators};
从'react redux'导入{connect};
从“/SectionIdeas”导入SectionIdeas
从“../actions/api”导入{readStateFromServer,setStateToServer};
从“../actions/ideas”导入*作为ideasActions;
类应用程序扩展组件{
建造师(道具){
超级(道具);
dispatch(readStateFromServer());
}
render(){
const{dispatch}=this.props
const ideasBoundActions=bindActionCreators(ideasActions,dispatch)
分派(setStateToServer())
如果(此.props.loaded){
返回(
)
}否则{
返回(
#i18n:加载#
)
}
}
}
App.propTypes={
已加载:PropTypes.bool.isRequired,
调度:需要PropTypes.func.isRequired
};
函数MapStateTops(状态){
返回{
已加载:state.data.loaded
};
}
导出默认连接(MapStateTops)(应用程序);
[编辑]操作
export const SHOW='SHOW_LINKS'
导出常量隐藏='隐藏链接'
导出功能显示(id){
返回{
类型:SHOW,
id:id
}
}
导出函数隐藏(id){
返回{
类型:隐藏,
id:id
}
}
减速器
从“../actions/ideas”导入{SHOW,HIDE}”
从“../actions/api”导入{RECEIVE_STATE}
导出默认函数思想(状态={},操作=”){
开关(动作类型){
案例接收状态:
返回action.json&&action.json.data&&action.json.data.ideas?action.json.data.ideas:状态
案例展示:
返回切换(状态、action.id、true)
案例隐藏:
返回切换(状态、action.id、false)
违约:
返回状态
}
}
功能切换(状态、id、显示){
让newState=Object.assign({},state)
newState.links.forEach((link)=>{
如果(link.id==id){
link.hide=!show
}
})
返回新闻状态
}
国家样本
{
“标题”:“数字图像中每个插图的创意”,
“正文”:“西蒂领事馆批准书”,
“链接”:[
{
“id”:1,
“图标”:“http:\/\/cdn my.zanichelli.local\/fe\/images\/dashboard\/spazio clil.png”,
“url:“http:\/\/online.scoola.zanichelli.it\/spazioclil\/”,
“标签”:“Spazio CLIL”,
“文本”:“,
“隐藏”:假
},
{
“id”:2,
“图标”:“http:\/\/cdn my.zanichelli.local\/fe\/images\/dashboard\/invalisi myzanichelli.png”,
“url:“http:\/\/online.scoola.zanichelli.it\/quartaprova\/”,
“标签”:“无效”,
“文本”:“,
“隐藏”:假
},
{
“id”:3,
“图标”:“http:\/\/cdn my.zanichelli.local\/fe\/images\/dashboard\/aula scienze myzanichelli.png”,
“url”:“http:\/\/aulasceenze.scoula.zanichelli.it\/”,
“标签”:“Aula di Scienze”,
“文本”:“,
“隐藏”:假
},
{
“id”:4,
“图标”:“http:\/\/cdn my.zanichelli.local\/fe\/images\/dashboard\/guida”-