Я новичок в разработке приложения React. Итак, у меня есть вопросы. Как лучше всего получить доступ к свойствам состояния внутри mapDispatchToProps? Использование ownProps.store.getState () в функции mDTP - плохая практика? В чем причина использования второго аргумента в 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);
В этом примере я передаю действия в mapDispatchToProps, и при вызове они активируют редукторы, которые были раньше, поскольку я использовал mapDispatchToProps, теперь они доступны в компоненте CalendarView.
Надеюсь, это поможет, отметьте как решенное, если это было полезно.
У меня есть ownProps на моем mapDispatchToProps для перехода к HomeScreen, если мне нужно состояние сброса (в моем случае мне нужно отображать разные экраны, если пользователь вошел в систему или выключен). Вот пример:
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();
Кроме того, я считаю, что это может помочь: Какая польза от аргумента ownProps в mapStateToProps и mapDispatchToProps?