Ви отримали першу частину правильно:
Так mapStateToProps
, стан Архів є аргументом / парам (надається користувачемreact-redux::connect
) і використовується для зв'язку компонента з певною частиною стану магазину.
Під посиланням я маю на увазі, що повернутий об'єкт mapStateToProps
буде наданий під час будівництва як реквізит, і будь-яка наступна зміна буде доступна через componentWillReceiveProps
.
Якщо ви знаєте шаблон дизайну Observer, це саме такий або невеликий його варіант.
Приклад допоможе зробити речі зрозумілішими:
import React, {
Component,
} from 'react-native';
class ItemsContainer extends Component {
constructor(props) {
super(props);
this.state = {
items: props.items, //provided by connect@mapStateToProps
filteredItems: this.filterItems(props.items, props.filters),
};
}
componentWillReceiveProps(nextProps) {
this.setState({
filteredItems: this.filterItems(this.state.items, nextProps.filters),
});
}
filterItems = (items, filters) => { /* return filtered list */ }
render() {
return (
<View>
// display the filtered items
</View>
);
}
}
module.exports = connect(
//mapStateToProps,
(state) => ({
items: state.App.Items.List,
filters: state.App.Items.Filters,
//the State.App & state.App.Items.List/Filters are reducers used as an example.
})
// mapDispatchToProps, that's another subject
)(ItemsContainer);
Може бути інший компонент реагування, який називається itemsFilters
дисплеєм та збереженням стану фільтра в стан Redux Store, демонстраційний компонент "прослуховує" або "підписався" на фільтри стану Redux Store, тому всякий раз, коли фільтри зберігають стан змін (за допомогою filtersComponent
) реагують -redux виявить, що відбулася зміна, і сповістить або "опублікує" всі прослуховувані / підписані компоненти, надіславши зміни до їхcomponentWillReceiveProps
які в цьому прикладі запустять перезарядку елементів та оновлять показ через те, що стан реакції змінився .
Повідомте мене, чи є приклад заплутаним чи недостатньо зрозумілим, щоб дати краще пояснення.
Що стосується: Це означає, що стан, спожитий вашим цільовим компонентом, може мати диво відмінну структуру від стану, оскільки він зберігається у вашому магазині.
Я не отримав питання, але просто знаю, що реакційний стан ( this.setState
) абсолютно відрізняється від стану магазину Redux Store!
Стан реагування використовується для обробки перемальовування та поведінки компонента, що реагує. Стан реагування міститься виключно до компонента.
Стан магазину Redux - це комбінація станів редукторів Redux, кожне з яких відповідає за управління логікою невеликої порції додатка. До цих атрибутів редукторів можна отримати доступ за допомогою react-redux::connect@mapStateToProps
будь-якого компонента! Завдяки чому стан додатка магазину Redux є доступним для програми, тоді як стан компонента є ексклюзивним для себе.