如何在 react redux 中使用 connect
How use connect in react redux
webpack预设了什么来处理连接装饰
我尝试 运行 webpack 但什么也没发生
/*
connect(store)
class App extends React.Component{
}
*/
要使用connect()
,您需要定义一个名为mapStateToProps
的特殊函数,它告诉我们如何将 Redux store state 转换为 props。比如VisibleTodoList需要计算todos传给TodoList,所以我们定义一个根据state.visibilityFilter过滤state.todos的函数,在它的mapStateToProps中使用:
const getVisibleTodos = (todos, filter) => {
switch (filter) {
case 'SHOW_COMPLETED':
return todos.filter(t => t.completed)
case 'SHOW_ACTIVE':
return todos.filter(t => !t.completed)
case 'SHOW_ALL':
default:
return todos
}
}
const mapStateToProps = state => {
return {
todos: getVisibleTodos(state.todos, state.visibilityFilter)
}
}
现在 o 必须调度操作来读取状态。为此,您可以使用 mapDispatchToProps()
函数接收 dispatch()
方法和 returns 要注入组件的回调道具。
const mapDispatchToProps = dispatch => {
return {
onTodoClick: id => {
dispatch(toggleTodo(id))
}
}
}
最后,通过调用 connect() 并传递这两个函数来使用 VisibleTodoList:
import { connect } from 'react-redux'
const VisibleTodoList = connect(
mapStateToProps,
mapDispatchToProps
)(TodoList)
export default VisibleTodoList
webpack预设了什么来处理连接装饰 我尝试 运行 webpack 但什么也没发生
/*
connect(store)
class App extends React.Component{
}
*/
要使用connect()
,您需要定义一个名为mapStateToProps
的特殊函数,它告诉我们如何将 Redux store state 转换为 props。比如VisibleTodoList需要计算todos传给TodoList,所以我们定义一个根据state.visibilityFilter过滤state.todos的函数,在它的mapStateToProps中使用:
const getVisibleTodos = (todos, filter) => {
switch (filter) {
case 'SHOW_COMPLETED':
return todos.filter(t => t.completed)
case 'SHOW_ACTIVE':
return todos.filter(t => !t.completed)
case 'SHOW_ALL':
default:
return todos
}
}
const mapStateToProps = state => {
return {
todos: getVisibleTodos(state.todos, state.visibilityFilter)
}
}
现在 o 必须调度操作来读取状态。为此,您可以使用 mapDispatchToProps()
函数接收 dispatch()
方法和 returns 要注入组件的回调道具。
const mapDispatchToProps = dispatch => {
return {
onTodoClick: id => {
dispatch(toggleTodo(id))
}
}
}
最后,通过调用 connect() 并传递这两个函数来使用 VisibleTodoList:
import { connect } from 'react-redux'
const VisibleTodoList = connect(
mapStateToProps,
mapDispatchToProps
)(TodoList)
export default VisibleTodoList