Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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_Node.js_Reactjs - Fatal编程技术网

Javascript React组件视图未获得更新

Javascript React组件视图未获得更新,javascript,node.js,reactjs,Javascript,Node.js,Reactjs,我有一个React组件,可以管理列表中的多个手风琴,但是当我更新一个子项时,在React开发工具上,它显示了更新的文本,但在视图/ui上,它没有更新。请给我一些建议 var AccordionComponent = React.createClass({ getInitialState: function() { var self = this; var accordions = this.props.children.map(function(accordion, i) {

我有一个React组件,可以管理列表中的多个手风琴,但是当我更新一个子项时,在React开发工具上,它显示了更新的文本,但在视图/ui上,它没有更新。请给我一些建议

var AccordionComponent = React.createClass({
  getInitialState: function() {
  var self = this;
  var accordions = this.props.children.map(function(accordion, i) {
   return clone(accordion, {
    onClick: self.handleClick,
    key: i
  });
});

  return {
    accordions: accordions
  }
},
handleClick: function(i) {
  var accordions = this.state.accordions;

  accordions = accordions.map(function(accordion) {
    if (!accordion.props.open && accordion.props.index === i) {
      accordion.props.open = true;
    } else {
      accordion.props.open = false;
    }
    return accordion;
  });

  this.setState({
    accordions: accordions
  });
},
componentWillReceiveProps: function(nextProps) {
  var accordions = this.state.accordions.map(function(accordion, i) {
    var newProp = nextProps.children[i].props;

    accordion.props = assign(accordion.props, {
      title: newProp.title,
      children: newProp.children
    });

    return accordion;
  });

  this.setState({
    accordions: accordions
  });
},
render: function() {
  return (
    <div>
      {this.state.accordions}
    </div>
  );
}
var AccordionComponent=React.createClass({
getInitialState:函数(){
var self=这个;
var accordions=this.props.children.map(函数(accordion,i){
返回克隆(手风琴{
onClick:self.handleClick,
关键:我
});
});
返回{
手风琴
}
},
handleClick:函数(i){
var accordions=this.state.accordions;
手风琴=手风琴.地图(功能(手风琴){
如果(!accordion.props.open&&accordion.props.index==i){
accordion.props.open=true;
}否则{
accordion.props.open=false;
}
回归手风琴;
});
这是我的国家({
手风琴
});
},
组件将接收道具:函数(下一步){
var accordions=this.state.accordions.map(函数(accordion,i){
var newProp=nextrops.children[i].props;
accordion.props=分配(accordion.props{
标题:newProp.title,
孩子们:新道具
});
回归手风琴;
});
这是我的国家({
手风琴
});
},
render:function(){
返回(
{这个.州.手风琴}
);
}

编辑:
该组件确实触发了
componentWillReceiveProps
事件,但它仍然从未得到更新


谢谢

经过几天的努力,我终于想出了一个解决方案。
组件将接收道具
事件是在组件道具更改时触发的,所以没有问题。问题是
AccordionListComponent
AccordionComponent
的孩子没有更新其值/道具/状态

当前解决方案:

componentWillReceiveProps: function(nextProps) {
 var accordions = this.state.accordions.map(function(accordion, i) {
    // get current accordion key, and props value
    // update new props with old
    var newAc = clone(accordion, nextProps.children[i].props);

    // update current accordion with new props
    return React.addons.update(accordion, {
      $set: newAc
    });
  });

 this.setState({
   accordions: accordions
 });
}
我尝试只克隆和重置手风琴,但显然它没有更新组件


谢谢

我遇到了类似的问题。因此,在这里报告我的解决方案可能是相关的


我有一个图形,每当我点击一次LoadData按钮(我可以看到第二次点击后的视觉变化)时,它就不会得到更新

图形组件被设计为父组件(连接到Redux存储)的子组件,因此数据作为道具传递

问题:数据已正确地从存储区(父级)中获取,但图形组件(子级)似乎没有对其作出反应

解决方案:

  componentWillReceiveProps(nextProps) {
     this.props = null;
     this.props = nextProps;
     // call any method here   
  }
希望这能有所帮助