即使状态发生变化,React视图也不会更新

时间:2018-12-03 22:23:31

标签: javascript reactjs

我正在尝试使用reddit.json创建一个HackerNews

我正在获取重新生成数组的数据,并将其存储在变量中

就目前而言,我只能访问伪造的json数据:

    results= [
{'author' : Mister1,'url':'http://url1.com','score':400},
{'author' : Mister2,'url':'http://url2.com','score':350},
{'author' : Mister3,'url':'http://url3.com','score':500},
{'author' : Mister4,'url':'http://url1.com','score':456},
]

因此,当我更改要在栏中搜索的主题时,状态正在改变并且我正在获取所需的内容,我的问题是视图未更新并按旧结果显示样式

我认为问题出在我的渲染代码中:

const list = (
      results
      &&
      results[searchKey]
      &&
      results[searchKey].hits
    )    ||  [
{'author' : Mister1,'url':'http://url1.com','score':400},
{'author' : Mister2,'url':'http://url2.com','score':350},
{'author' : Mister3,'url':'http://url3.com','score':500},
{'author' : Mister4,'url':'http://url1.com','score':456},
]

即使结果正在更改,它的样式也与假json数据一样。

我的代码:https://codesandbox.io/embed/mqpjrk3loy

对不起,我的问题很愚蠢。

2 个答案:

答案 0 :(得分:0)

我可能是错的,但我认为可能是||。操作员。您是否尝试过三元运算符?

{results ? results[searchKey].hits : ' // your hardcoded data '}

答案 1 :(得分:0)

如果我理解正确,则您也尝试将list的变量设置为results[searchKey].hits,这与您的this.state.results的形状错误

您真正想要的是:

(results && results.results) || HARDCODED_FALLBACK_DATA