如何在React.js中传递一系列项目

Dar*_*try 6 reactjs

const ListItem = React.createClass({
  render: function() {
    return <li > {
      this.props.item
    } < /li>;
  }
});

const ToDoList = React.createClass({
  render: function() {

    const todoItems = this.props.items.map(item => {
      return <ListItem item = {
        item
      } > < /ListItem>
    })

    return ( <
      ul > {
        todoItems
      } < /ul>
    );
  }
});

//creating a basic component with no data, just a render function
const MyApp = React.createClass({
  render: function() {
    return ( <
      div className = "well" >
      <
      h1 > Hello < /h1> <
      ToDoList > < /ToDoList> <
      /div>
    );
  }
});

//insert the component into the DOM
ReactDOM.render( < MyApp / > , document.getElementById('container'));



<
div id = "container" > < /div>
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="container"></div>
Run Code Online (Sandbox Code Playgroud)

ReactJs教程说:

如果我们想让它成为一个真正可扩展的列表,我们可以创建一个项目数组,然后通过ToDoList组件将它们传递给props,然后渲染出每个项目.我们现在就这样做.

如何传递上述代码中的项目数组?

piz*_*r0b 13

数据可以通过道具传递给组件.

https://facebook.github.io/react/tutorial/tutorial.html#passing-data-through-props

在你的情况下,道具将通过组件内部访问this.props.

<TodoList />采取称为项目的道具,这是一个数组.在里面,<TodoList />您可以映射该数组并返回元素.

例如,在您的类的render方法中,您将返回带有项目道具的TodoList:

const myItems = [{ name: 'item 1' }, { name: 'item2' }];
function MyApp() {
    return (
       <TodoList items={myItems} />
    );
}
Run Code Online (Sandbox Code Playgroud)

然后在TodoList中映射项目

function TodoList({ items }) {
    return items.map(item => (
        <h1>{item.name}</h1>
    ));
}
Run Code Online (Sandbox Code Playgroud)

  • 您能解释一下为什么我们必须在“TodoList”函数中的“items”两边加上大括号吗?我尝试了 `function TodoList( items )` 但它返回了错误: *items.map 不是函数* (2认同)