Как экспортировать магазин в редуксе? - PullRequest
0 голосов
/ 17 апреля 2020

Я новичок в реакции и редукции ... поэтому, пожалуйста, прости меня за ошибки noob ie. Я прочитал несколько документов по избыточности и пришел к выводу, что именно так я должен хранить состояние реагирующего компонента. Я нуждаюсь в избыточности, потому что есть намного больше вложенных компонентов, которые нуждаются в быстром доступе к данным. однако ... когда я пытаюсь экспортировать магазин ... я не могу найти, как это сделать. Мое приложение. js

export default class App extends Component {
  state = {
    xx: null,
    yy: null
  }
  componentDidMount(){
      //some logic
    // State gets data from api
    this.setState({
      xx: someval,
      yy: someval2
    });
  }
  render() {
    const obj = {
      xx: this.state.xx,
      yy: this.state.yy
    };

    userReducer(obj,updateUserDetails());

    const store = createStore(userReducer);

    return (
      <Provider store={store} >
        <UserDetails props ={this.state} />
      </Provider>
    );
  }
}

// Reducer function
export const userReducer = (state, action) => {
  console.log("in reducer " + JSON.stringify(state));

  switch(action.type) {
    case 'UPDATE_USER_INFO':
      state = {
        ...state,
        xx: action.payload.xx,
        yy: action.payload.yy
      }
      break;
  }

  return state;
}

// Doesn't work
export const store = createStore(userReducer)

// Action
export const updateUserDetails = () => {
  return {
    type: 'UPDATE_USER_INFO'
  }
}

Не могу найти способ экспортировать хранилище, чтобы оно было доступно для вложенных компонентов. Пожалуйста, помогите Спасибо заранее!

1 Ответ

0 голосов
/ 17 апреля 2020

Просматривая ваш код, я вижу несколько проблем, каждая из которых может быть вашей проблемой.

при первой загрузке редуктора он должен содержать начальное значение для начального состояния, не связанное с тем, которое вы хотите установить при монтировании компонента


    // assiging empty obj as initial value
   export const userReducer = (state = {}, action)

Действия приставки являются функциями более высокого порядка, возвращающими объект для отправки


export const updateUserDetails = () => (dispatch, getState) => {
 return dispatch ({
  type: 'UPDATE_USER_INFO'
 })

}


О вашем createStore, также укажите здесь начальное значение


 // assign empty obj as initial value
export const store = createStore(userReducer, {})

надеюсь, что это полезно, во всяком случае, я рекомендовал снова просмотреть документы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...