【问题标题】:return variable in render function在渲染函数中返回变量
【发布时间】:2015-02-03 01:21:02
【问题描述】:

如何在反应组件渲染函数中返回变量,
我尝试输出列表,并且必须在循环期间在 wrap/container 标记属性中打印一些数据。

var WFilterOptionListLevel0 = React.createClass({
  loadOptionLevel0: function() {
    $.ajax({
      url: this.props.getOption,
      data: {"level":0},
      type: 'POST',
      dataType: 'json',
      success: function(data) {
        this.setState({optionLevel0: data.option.list});
      }.bind(this),
    });
  },

  getInitialState: function() {
    return {optionLevel0: []};
  },
  componentDidMount: function() {
    this.loadOptionLevel0Mock();
    this.loadOptionLevel0();
  },
  render: function() {
    var optionList = this.state.optionLevel0.map(function(o) {
      return (
        <div className="option-list level-0" data-id={o.id}>
          <div className="title handle-slide-list-container">{o.title}</div>
        </div>
      );
    });
    return (
      {optionList}
    );
  }
});

【问题讨论】:

  • 看来你应该在this.state.optionLevel0 上运行map() 而不是this.props.getOption

标签: javascript jquery reactjs


【解决方案1】:

React 组件应该只返回 render 中的单个根节点,但您当前的实现是返回一个数组。您需要将输出包装在单个节点中,例如 &lt;div&gt;:

render: function() {
  var optionList = this.state.optionLevel0.map(function(o) {
    return (
      <div className="option-list level-0" data-id={o.id}>
        <div className="title handle-slide-list-container">{o.title}</div>
      </div>
    );
  });
  return (
    <div>
      {optionList}
    </div>
  );
}

【讨论】:

  • “你当前的实现返回一个数组” 实际上,要么是语法错误,要么是启用了 ES6 语法,它是一个具有属性 optionList 的对象。
  • 感谢@FelixKling 的澄清。我没有尝试运行它。
猜你喜欢
  • 1970-01-01
  • 2019-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
相关资源
最近更新 更多