Reactjs 将第二个参数(ownProps)传递给mapDispatchToProps-是一个错误的约定吗?

Reactjs 将第二个参数(ownProps)传递给mapDispatchToProps-是一个错误的约定吗?,reactjs,redux,Reactjs,Redux,我是开发React应用程序的新手。所以,我有一些问题。 在mapDispatchToProps中访问状态属性的最佳做法是什么?在mDTP函数中使用ownProps.store.getState()是一种不好的做法吗? 在mDTP中使用第二个参数的原因是什么(除了在容器组件中传递附加属性) 请就这一主题提出建议。 非常感谢你!对不起,我的语言不通。这个答案可能会帮助您: mapDispatchToProps的存在是为了在遵循容器>组件模式时通过组件访问还原器 例如,我有以下减速器: const

我是开发React应用程序的新手。所以,我有一些问题。 在mapDispatchToProps中访问状态属性的最佳做法是什么?在mDTP函数中使用ownProps.store.getState()是一种不好的做法吗? 在mDTP中使用第二个参数的原因是什么(除了在容器组件中传递附加属性)

请就这一主题提出建议。
非常感谢你!对不起,我的语言不通。

这个答案可能会帮助您:

mapDispatchToProps的存在是为了在遵循容器>组件模式时通过组件访问还原器

例如,我有以下减速器:

const updateToPreviousMonth = (state) => {
    let newState = state,
        currentMonth = newState.get('currentMonth');
    let previousMonth = sanitizedDate(moment(currentMonth).subtract(1, 'month'));

    return newState.set('currentMonth', previousMonth);
};

const updateSelectedDate = (state, action) => {
    return state.set('selectedDate', action.selectedDate);
};

export default (state = initialState, action = {}) => {
    switch (action.type) {
        case constants.SET_TO_PREVIOUS_MONTH:
            return updateToPreviousMonth(state);
        case constants.UPDATE_SELECTED_DATE:
            return updateSelectedDate(state, action);
        default:
            return state;
    }
};
常量是返回已更改状态的操作和函数(还原器)

const mapDispatchToProps = {
    setToPreviousMonth: CalendarViewRedux.actions.setToPreviousMonth,
    updateSelectedDate: CalendarViewRedux.actions.updateSelectedDate
};

export class CalendarView extends PureComponent {
    componentDidMount() {
        this.props.loadSchedules();
    }

    render() {
        return (<CalendarViewRender
            {...this.props} />);
    }
}

export default connect(mapStateToProps, mapDispatchToProps)(CalendarView);
const mapDispatchToProps={
setToPreviousMonth:CalendarViewRedux.actions.setToPreviousMonth,
updateSelectedDate:CalendarViewRedux.actions.updateSelectedDate
};
导出类CalendarView扩展了PureComponent{
componentDidMount(){
this.props.loadSchedules();
}
render(){
返回();
}
}
导出默认连接(MapStateTrops、mapDispatchToProps)(日历视图);
在本例中,我将在mapDispatchToProps中传递操作,当调用这些操作时,它们将从以前激活还原器,因为我使用了mapDispatchToProps,它们现在在CalendarView组件中可用


希望这有帮助,如果有帮助,请标记为已解决

如果我需要重置状态,我的地图DispatchToprops上有“ownProps”导航到主屏幕(在我的情况下,如果用户登录或关闭,我需要显示不同的屏幕)。下面是一个例子:

const mapDispatchToProps = (dispatch, ownProps) => {
  return {
    onChangeText: (key, value) => {
      dispatch(onChangeField(key, value))
    },

    goToHomeScreen: () => {
      ownProps.navigation.dispatch(StackActions.reset({index: 0, key: null, actions: [NavigationActions.navigate({ routeName: 'LoggedDrawer'})]}))
    },
  }
}
打电话给你,我只是这么做:

this.props.goToHomeScreen();
此外,我相信这有助于: