【问题标题】:React Flexbox-grid build dynamicallyReact Flexbox-grid 动态构建
【发布时间】:2016-06-25 23:38:42
【问题描述】:

我希望你能帮助我解决这个问题。我一直在尝试使用 flexbox-grid 在动态反应中创建一个网格已经有一段时间了。我现在想要实现的是每 3 个元素创建一个新行。我一直在玩流星 simple-todos 示例,我正在尝试扩展它以了解更多信息。

到目前为止,我所拥有的代码是:

renderTasks() {
let filteredTasks = this.props.tasks;

return filteredTasks.map((task, i) => {
  const currentUserId = this.props.currentUser && this.props.currentUser._id;
  const showPrivateButton = task.owner === currentUserId;

  if (i % 3 == 0){
    console.log("row " + i);
    return (
      <Row>
        <Task
          key={task._id}
          task={task}
          showPrivateButton={showPrivateButton}
        />
      </Row>
    );
  }else{
    console.log("col " +i );
    return (

      <Task
        key={task._id}
        task={task}
        showPrivateButton={showPrivateButton}
      />
    );
  }

});
}

这里的问题是我不能让该行保持打开状态,而必须立即关闭它。我认为这应该不难实现,但我用谷歌搜索了很多,找不到任何东西:(

【问题讨论】:

    标签: meteor reactjs flexbox


    【解决方案1】:

    这就是我要做的。首先,我会根据它们应该放置的行对任务进行分组。然后我会有一个数组数组,或多或少像这样:

    [
      [ task_1, task_2, task_3 ],
      [ task_4, task_5 ]
    ]
    

    然后我会映射这个数组来渲染每一行。最后,要渲染一行,我会映射该行的任务并渲染每个任务。

    类似这样的:

    renderTasks() {
      let filteredTasks = this.props.tasks;
      let taskRows = filteredTasks.reduce(function (rows, task, i) {
        let rowIndex = Math.floor(i / 3);
    
        if (i % 3 == 0) {
          rows[rowIndex] = [task]
        } else {
          rows[rowIndex].push(task)
        }
        return rows;
      }, []);
    
      return taskRows.map(this.renderTasksRow);
    }
    
    renderTasksRow(rowTasks) {
      return <Row>{rowTasks.map(this.renderTask)}</Row>;
    }
    
    renderTask(task) {
      const currentUserId = this.props.currentUser && this.props.currentUser._id;
      const showPrivateButton = task.owner === currentUserId;
    
      return (
        <Task
          key={task._id}
          task={task}
          showPrivateButton={showPrivateButton}
        />
      );
    }
    

    【讨论】:

    • 哇。非常感谢!现在我考虑一下,将其拆分为不同的功能实际上是非常合乎逻辑的。我一心想把所有事情都做好,以至于我绊倒了。非常感谢您的大力帮助:)
    • 在 React 中,每次我映射一个数组以渲染一组元素时,我几乎总是提取该函数。这不仅使我的代码更加专注,而且因为它需要更少的缩进,所以它也更具可读性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 2018-05-03
    相关资源
    最近更新 更多