【问题标题】:React not rendering data coming from reflux store反应不渲染来自回流存储的数据
【发布时间】:2015-07-15 12:24:39
【问题描述】:

我的代码在从商店传递数据后无法呈现,我遇到了麻烦。

我能够 console.log() 来自商店的数据,但数据没有显示在 DOM 中。

这是我的组件的样子

var ItemList = React.createClass({
  mixins: [Reflux.connect(SearchStore,"data")],

  getItems() {
    var items;
    var self = this;

    if(typeof self.state.data !== 'undefined' && self.state.data !== '404') {
      items = self.state.data;              
      for(var key in items) {
        if (items.hasOwnProperty(key)) {
          items[key].map(function(obj, key){
            return(
              <h1>Test Test</h1>
            );
          })
        }
      }
    } else {
      return(<div></div>);
    }
  },

  render() {
    var self = this;
    return (
      <div id="search-results">
        {self.getItems()}
      </div>
    );
  }
});

export default ItemList;

数据在传递后从存储中进入,我可以读取数据并能够渲染空 div,但带有文本的 div 根本没有被渲染。我的意图是获取传递的数据并将它们作为道具传递给另一个组件。

对于解决这个问题的任何帮助都会非常棒,因为在过去的几个小时里我一直被困在这个问题上。

【问题讨论】:

    标签: javascript reactjs refluxjs


    【解决方案1】:

    问题是getItems 不返回渲染项的数组。所以我会把它改成这样:

    var ItemList = React.createClass({
    
      mixins: [Reflux.connect(SearchStore,"data")],
    
      renderItems() {
        var output = [];
    
        if (typeof this.state.data !== 'undefined' && this.state.data !== '404') {
          for (var key in this.state.data) {
            if (this.state.data.hasOwnProperty(key)) {
              // should use each or forEach instead of map as we don't do anything
              // with returned array but ignoring that issue
              this.state.data[key].map(function(obj, key){
                output.push(<h1>Test Test</h1>);
              });
            }
          }
    
          return output;
        } else {
          return <div/>;
        }
      },
    
      render() {
        return (
          <div id="search-results">
          {
            this.renderItems()
          }
          </div>
        );
      }
    
    });
    
    
    export default ItemList;
    

    【讨论】:

    • @Bazinga777 我误读了你的一些代码——我更新了我的答案。
    • 嘿,我完全忘记了使用推送来更新这些东西。非常感谢。
    猜你喜欢
    • 2019-10-07
    • 1970-01-01
    • 2020-09-05
    • 2019-04-26
    • 1970-01-01
    • 2018-03-21
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多