я использую React с Redux. У меня есть два вопроса: 1. Я не использую никаких действий. это плохая картина? 2. также при вызове метода отправки я отправляю данные объекта с индексом ключа в редуктор
dispatch({
type: 'SHOW',
key: obj, // send obj object to reducer
});
и через редуктор:
switch (action.type) {
case 'SHOW':
return {
...state,
modalVisible: 'SHOW',
dataItem: action.key,
};
передача данных объекта компоненту слушателя:
const items = store.getState().schemaFormReducer.dataItem;
мое решение неверно? Есть ли лучшее и более правильное решение?
Код Compelete:
Редуктор:
function schemaFormReducer(state, action) {
state = {
modalVisible: 'Initial',
dataItem: null,
};
switch (action.type) {
case 'SHOW':
return {
...state,
modalVisible: 'SHOW',
dataItem: action.key,
};
case 'HIDE':
return {
...state,
modalVisible: 'HIDE',
dataItem:null
};
default:
return state;
}
}
export default schemaFormReducer;
Хранить:
import { createStore, combineReducers } from 'redux';
import historyReducer from './pims/reducers/historyReducer';
import schemaReducer from './pims/reducers/schemaReducer';
import schemaFormReducer from './pims/reducers/schemaFormReducer';
const rootReducer = combineReducers({
historyReducer,
schemaReducer,
schemaFormReducer,
});
const store = createStore(rootReducer);
export default store;
компонент
const SchemaForm = ({ onModalShow }) => {
some codes...
....
....
const mapStateToProps = state => {
return {
schemaForm: state.schemaFormReducer.modalVisible,
};
};
const mapDispatchToProps = dispatch => {
return {
onModalShow: obj => {
dispatch({
type: 'SHOW',
key: obj,
});
},
onModalHide: () => {
dispatch({
state: 'HIDE',
});
},
};
};
export default connect(mapStateToProps, mapDispatchToProps)(SchemaForm);
}
}