代码如下:
const TodoList = ({ todos, onTodoClick }) => (
<ul>
{todos.map(todo =>
<Todo
key={todo.id}
{...todo}
onClick={() => onTodoClick(todo.id)}
/>
)}
</ul>
)
这是todolist,里面有个Todo,但是它的写法是这样的:
const Todo = ({ onClick, completed, text }) => (
<li
onClick={onClick}
style={{
textDecoration: completed ? 'line-through' : 'none'
}}
>
{text}
</li>
)
Todo.propTypes = {
onClick: PropTypes.func.isRequired,
completed: PropTypes.bool.isRequired,
text: PropTypes.string.isRequired
}
想问一下,这个Todo明明是个函数,为什么可以直接写在上面的todolist里面,而且好像是成了子组件?但是它里面也并没有声明成组件的代码啊?还有一个问题,这个函数里面的三个参数是怎么来的?求指点。
其实,
Functional Component
就等于Class Component
只包含render
方法,一般写一些很简单的展示组件的时候,可以用Functional
。这三个参数应该是你的
todo
对象里面包含的。