第 27 天 !
昨天我们把 redux 给接入到我们的专案上,
那今天试着把 store 的 state 给导入到我们的 component 里,
那我们要如何取得 store 的资讯呢?
在 redux
里, 我们是不能直接的去存取 store
的资料,
所以我们必须去用间接的方式去取得我们想要的资讯,
首先,我们先使用 redux 提供的 connect
,
connect 会帮我们去连接 store ,并且让我们设定要提取哪些资料跟 action
connect(mapStateToProps?, mapDispatchToProps?, mergeProps?, options?)
用法:
connect(mapStateToProps, mapDispatchToProps, mergeProps, options)(Component);
当我们希望从 store
上获取 state
时,就需要去设定 mapStateToProps
, 格式是 function
,
它会导入 store
的 state
, return
的值,会被当成 props
, 传给指定的 component
,
只要 store 发生变化,就会触发这个 function
like:
const mapStateToProps = (state, ownProps) => {
return {
...state,
};
};
当返回值发生变化的话, 就会触发 re-render
,
如果,mapStateToProps
没有设定, 那 store
的变化,将不会影响到这个 component
在 redux
, dispatch
是无法随意引入的,要引入必须从 mapDispatchToProps
,
它会提供 dispatch
来让我们导入 action
格式是 function
:
const mapDispatchToProps = (dispatch, ownProps) => {
return {
action: (payload) => {
dispatch(actionCreator(payload));
},
};
};
格式是 object
:
const mapDispatchToProps = {
actionCreator: (payload) => ({
type: '',
payload,
}),
};
有两种绑定方式, 一种是 function
,一种是 object
,
function
比较属於客制化, 就是说假如还想在里面加上额外逻辑,那就选用 function
,
最後都会把我们设定的当做 props
传入 component
export default function Home({ action }) {
return <div className={cls.root}></div>;
}
假如没有,其实可以考虑传入 actionCreator
, connect
会帮你自动绑定 dispatch
最後假如不设定,最後会把 dispatch function
当 props
传入,
export default function Home({ dispatch }) {
return <div className={cls.root}></div>;
}
redux
相关的参数都会是 props
传递, 那如何跟 component
的 props
做合并,那就必须要去考虑顺序,
原本的顺序是:
那我们可以根据我们的需求,去调整这部份,
格式是:
function mergeProps(stateProps, dispatchProps, ownProps) {
return {
...stateProps,
...dispatchProps,
...ownProps
}
}
<<: [从0到1] C#小乳牛 练成基础程序逻辑 Day 27 - File I/O 逐字识别码@ 时间日期 乱数
元件介绍 Badge 可以让我们在其 children element 的右上角(预设位置)显示一个...
前言: 在Activity 和 Fragment 只要操作 xml 的元件,在 onCreate 时...
新零售行销模式案例,全通路时代来临该如何布局,一直以来都在担任辅导顾问为中小企业解决网路行销问题但都...
补充 Nmap 输入与输出 Nmap Scripting Engine (NSE) NSE 用来扩充...
171. Excel Sheet Column Number 转眼间,来到第十天了!今天这一题是一个...