如果状态不存在,我可以在mapStateProps中调用一个动作吗?我想知道它是否不影响性能,以及无意的重新渲染。
或者我可以使用reselect执行此操作,而不是在创建选择时调用操作。
或者您对如何做有任何建议?感谢
function mapStateToProps(state,ownProps) {
return {
reviewContentDetails: state.reviewsReducer.reviewContentDetails || callAnAction(ownProps._id),
};
}
function mapDispatchToProps(dispatch) {
return {
actions: bindActionCreators(reviewsAction, dispatch),
};
}
答案 0 :(得分:1)
对于Action,您必须在 mapDispatchToProps
中进行操作例如:这是测试组件
const Test = ({onclickTest}) =>{
return <div>
<button onClick ={onclickTest}>Test Button</button>
</div>
然后在功能中定义你的动作 mapDispatchToProps
const mapDispatchToProps= {onclickTest : yourOnclickTestAction}
最后,您可以使用 Redux
进行连接export default connect (
null,
mapDispatchToProps)(Test)
PS:对于 mapStateToProps 我认为你应该使用选择器。修复功能更容易。希望它对你有帮助^^
答案 1 :(得分:1)
绝对不是。 mapStateToProps
函数应该仅从状态树中提取值并将它们作为新对象返回。它应该从不做任何异步工作,或者启动任何其他行为。
如果您需要根据值的变化调用函数,请在React组件的componentWillReceiveProps
中执行此操作。
答案 2 :(得分:-1)
是的,你可以,但它可能会导致比你想要解决的问题多得多的问题。状态最简单,最简单地用缩减器初始化,这就是使用的模式。
如果您需要执行一次操作(例如调度异步提取或类似操作),最好在componentDidMount中执行它。