問題があります。私は単純なグリッドを持っており、グリッドは還元状態からデータを取得します。しかし、私が並べ替えると、私のデータは州で変化していることに気がつきました。コードの ここビットRedux状態は変わりますが、無効にする必要はありません。
減速:
const gridOptions = {
columns: ["id", "name", "lastname"],
data: [
{id: 1, name: "test", lastname: "test2"},
{id: 2, name: "test1", lastname: "test3"}
],
sortBy: {},
filter: {}
}
const rootReducer = combineReducers({
data: function (state = gridOptions.data, action) {
return [...state];
},
selectedRow: function (state = {}, action) {
switch (action.type) {
case "ROW_SELECTED":
return action.data
default:
return state
}
},
sortBy: function (state = gridOptions.sortBy, action) {
switch (action.type) {
case "SORT_CHANGE":
return Object.assign({}, action.column);
default:
return state;
}
},
columns: function (state = gridOptions.columns, action) {
return state;
},
filter: function (state = gridOptions.filter, action) {
return state;
}
})
const store = createStore(rootReducer);
コンテナコンポーネント。私はそれが少し乱雑であることを知っています。
var mapStateToProps = (state) => {
return {
data: (() => {
if (!state.sortBy) {
return state.data
} else {
return state.data.sort()
}
})(),
selectedRow: state.selectedRow,
sortBy: state.sortBy
}
}
var mapDispatchToProps = (dispatch) => {
return {
onRowSelected: data => dispatch({type: "ROW_SELECTED", data}),
onSortChange: column => {
dispatch({type: "SORT_CHANGE", column})
},
onFilter: filterText => {
dispatch({type: "FILTER_CHANGE", filterText})
}
}
}
ここで質問します。何らかの理由で私は理解できません...もしconsole.logにstate.data
...ソートされるたびに、state.data
は突然起こります。しかし、本当の問題はです。どうして?それとも私はreduxに納得できないのですか?
大変ありがとうございました。ソート機能が問題だったのですが、私はそれをテストしました。多分私は何かを見過ごした。でもありがとう。それは働いた – Daniel
うれしい。この動作を示す最小限のコードを追加しました.F12コンソールから実行し、出力を観察できます。 – ivarni
私はそれをやった...私はどこにソートを見たことがないと誓うことができます。しかし、大丈夫:)移動して.. – Daniel