@zlodiak

Почему не заполняется стейт после ввода?

Я создал страничку, на которой есть поле ввода textarea.

function Page1() {
  function handleChange(e) {
    store.dispatch({ type: 'CHANGE_VALUE', appText: e.target.value });
  }

  return (
    <div>
        <textarea 
          value={store.getState().appReducer.newAppText} 
          onChange={handleChange}>
        </textarea>
        <button>send</button>
        <div id="output"></div>
    </div>
  );
}


Установил redux, создал store и единственный редюсер appReducer.

let reducers = combineReducers({
    appReducer
});

const store = createStore(reducers);

export default store;

store.subscribe(v => {
    console.log(store.getState())
});

// store.dispatch({ type: 'CHANGE_VALUE', appText: 222 });

window.state = store.getState()


Как видите, всё довольно стандартно и просто. Но этот простой код не работает, это выражается в том, что после того как я ввожу символы в textarea, эти символы не попадают в стор.

Проверяю я это следующим образом:
1. открываю консоль браузера
2. ввожу state
3. нажимаю enter

В результате вижу, что стейт пуст.

Но если я в приведённом выше коде снимаю комментарий со строки
// store.dispatch({ type: 'CHANGE_VALUE', appText: 222 });


, то стор заполняется. Помогите пожалуйста понять как заполнять стор после того как я заполняю textarea

LIVE DEMO
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
JRK_DV
@JRK_DV
Рецепты https://codepen.io/jrkdv/full/LKLXdq
window.state = store.getState() <-- содержит результат функции
замените на:
window.state = store.getState <-- содержит ссылку на функцию

сейчас у вас в window.state попадает Объект и нигде больше не изменяется
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы