我正在按照 react-redux 教程 http://redux.js.org/docs/basics/ExampleTodoList.html 进行学习。
看到 link.js,我在想 {children} 是从哪里传过来的?
import React from 'react' import PropTypes from 'prop-types'
const Link = ({ active, children, onClick }) => { if (active) { return {children} }
return ( { e.preventDefault() onClick() }} > {children} ) }
Link.propTypes = { active: PropTypes.bool.isRequired, children: PropTypes.node.isRequired, onClick: PropTypes.func.isRequired }
export default Link
link.js 被容器组件 FilterLink.js 使用。FilterLink 传递了 "active" 值和 onclick 函数,但没有显式地传递 children 到 link.js。
import { connect } from 'react-redux' import { setVisibilityFilter } from '../actions' import Link from '../components/Link'
const mapStateToProps = (state, ownProps) => { return { active: ownProps.filter === state.visibilityFilter } }
const mapDispatchToProps = (dispatch, ownProps) => { return { onClick: () => { dispatch(setVisibilityFilter(ownProps.filter)) } } }
const FilterLink = connect( mapStateToProps, mapDispatchToProps )(Link)
export default FilterLink
请解释一下。
这段代码更像是
const { active, children, onClick } = props。此外,对于任何组件,
prop是第一个参数,
state`是第二个。 - RajeshSFC
不会有第二个属性(state
)。由于它是无状态的,拥有状态是没有意义的。 - Rajesh