在mapStateProps

时间:2017-07-11 08:01:31

标签: reactjs redux react-redux

如果状态不存在,我可以在mapStateProps中调用一个动作吗?我想知道它是否不影响性能,以及无意的重新渲染。

或者我可以使用reselect执行此操作,而不是在创建选择时调用操作。

或者您对如何做有任何建议?感谢

function mapStateToProps(state,ownProps) {
  return {
    reviewContentDetails: state.reviewsReducer.reviewContentDetails || callAnAction(ownProps._id),
  };
}

function mapDispatchToProps(dispatch) {
  return {
    actions: bindActionCreators(reviewsAction, dispatch),
  };
}

3 个答案:

答案 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中执行它。