Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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 JS-在更改localStorage状态时获取单独的组件以重新呈现_Javascript_Reactjs_Local Storage - Fatal编程技术网

Javascript React JS-在更改localStorage状态时获取单独的组件以重新呈现

Javascript React JS-在更改localStorage状态时获取单独的组件以重新呈现,javascript,reactjs,local-storage,Javascript,Reactjs,Local Storage,我有两个部分。一个叫做“GenerateRecipesFromList”,是一系列包含菜谱标题的“框”,另一个叫做子组件“AddButon”。现在Add按钮可以更新localStorage,但为什么它不“触发”状态更改并在父组件中重新呈现 我的代码笔是 var GenerateRecipesFromList=React.createClass({ getInitialState:函数(){ const defaultData=[[“意大利面”、“意大利面、油、酱、帕斯利干酪”]、[“PB&J”、

我有两个部分。一个叫做“GenerateRecipesFromList”,是一系列包含菜谱标题的“框”,另一个叫做子组件“AddButon”。现在Add按钮可以更新localStorage,但为什么它不“触发”状态更改并在父组件中重新呈现

我的代码笔是

var GenerateRecipesFromList=React.createClass({
getInitialState:函数(){
const defaultData=[[“意大利面”、“意大利面、油、酱、帕斯利干酪”]、[“PB&J”、“PB、J”]]
const localData=JSON.parse(localStorage.getItem('reclist');
返回{
reclist:localData?localData:defaultData
}
},  
render:function(){
var testData=JSON.parse(localStorage.getItem('reclist');
if(testData==null){
setItem('reclist',JSON.stringify(this.state.reclist));
}
var currentData=JSON.parse(localStorage.getItem('reclist');
var行=[];

对于(var i=0;i,通过调用
AddButton
组件中的
setState
,您正在更新此组件的状态,而不是父组件的状态

要更新父组件的状态,请在父组件中定义一个函数,并将其传递到
AddButton
的props中。然后您可以在
AddButton
中调用此函数来更新
GenerateRecipesFromList
的状态

var GenerateRecipesFromList = React.createClass({
  // ...
  updateRecList: function (reclist) {
    this.setState({ reclist: reclist });
  },
  render: function(){
    // ...
    return(
      <div className="centerMe">
        <AddButton updateRecList={ this.updateRecList } />
        { /* ... */ }
      </div>
    );
  },
});

var AddButton = React.createClass({
  // ...
  exposeAddRecipe: function(){
    // ...
    this.props.updateRecList(exposeCurrentData);
    // ...
  },
  // ...
});
var GenerateRecipesFromList=React.createClass({
// ...
updateRecList:函数(reclist){
this.setState({reclist:reclist});
},
render:function(){
// ...
返回(

var GenerateRecipesFromList = React.createClass({
  // ...
  updateRecList: function (reclist) {
    this.setState({ reclist: reclist });
  },
  render: function(){
    // ...
    return(
      <div className="centerMe">
        <AddButton updateRecList={ this.updateRecList } />
        { /* ... */ }
      </div>
    );
  },
});

var AddButton = React.createClass({
  // ...
  exposeAddRecipe: function(){
    // ...
    this.props.updateRecList(exposeCurrentData);
    // ...
  },
  // ...
});