Я не в состоянии восстановить state
в редукторегосударство не меняется в моем редукторе, когда действие отправляется
MyComponent выглядит следующим образом
const MyComponent = ({name, features, onClick}) => {
return (
<div>
Hello! {name}
<Button onClick={() => { onClick(features); }}> Weight</Button>
</div>
);
const mapDispatchToProps = (dispatch: any) => {
return {
onClick: (features) => {
dispatch(weightSort(features));
}
};
};
const mapStateToProps = (state: any, ownProps: any) => {
console.log(state); //Displays the state
return {
name: "John Doe",
features: ownProps.features,
};
};
export const FeatureBlock = connect(mapStateToProps, mapDispatchToProps)(MyComponent);
Мои действия и восстановителей выглядит следующим образом:
// Action Creator
export const weightSort = (features) => {
console.log("inside the weight sort action creator!!!");
return {
type: "SET_WEIGHT_FILTER",
filter: "DESC",
features,
};
};
// Reducer
export const weightFilter = (state = [], action) => {
switch (action.type) {
case "SET_WEIGHT_FILTER":
console.log(state); // Gives me empty state
console.log("++inside weight filter+++++", action); //Displays action
return state;
default:
return state;
}
};
export const FeatureBlock = connect(
mapStateToProps,
mapDispatchToProps,
)(MyComponent);
Что мне здесь не хватает? Любая помощь будет оценена!
Благодарим вас за ответ. Если бы мне пришлось сортировать функции на основе нажатия кнопки, как бы я это сделал? (Я хочу включить сортировку в компонент, как вы указали правильно) Если я хочу поместить его в mapDispatchToProps 'function mapDispatchToProps = ({' ' 'onFeaturesClick: orderFeatures' '}) ' Как вы это сделаете? –
Вы создали бы диспетчер действий, который принимает имя атрибута объекта, чтобы вы могли передать его вашему редуктору. В вашем редукторе вы можете использовать атрибут, переданный из вашего действия, для сортировки данных в редукторе и возврата нового объекта. Другим вариантом будет создание свойства состояния в контейнере, в котором вы визуализируете данные, например 'sortProperty', и привязываете обработчик onClick к вашим кнопкам, которые устанавливаютState на sortProperty. Затем в таблице, отображающей элементы, используйте функцию сортировки для заказа элементов. –