I am learning redux follow redux tutorial,when I saw todos todos-github example something confuse me:
Todo.js 
const Todo = ({ onClick, completed, text}) => (
  <li
    onClick={onClick}
    style={{
      textDecoration: completed ? 'line-through' : 'none'
    }}
  >
    {text}
  </li>
)
TodoList.js
const TodoList = ({ todos, onTodoClick }) => (
  <ul>
    {
      todos.map(todo =>
      <Todo
        key={todo.id}
        {...todo} //how does it work?
        onClick={() => onTodoClick(todo.id)}
      />
    )}
  </ul>
)
todos is an array ,todo is an object:
Todo item's props:
As I know now,the Todo,TodoList component function pass on params by using ES6  Destructuring assignment , but how {...todo} work ? it must do something to props, the {} in this is stand for it's a javascript syntax ,so ...todo is a Varargs to Todo component function? I dont know, any help appreciate.


 
    