Хорошее начало, кстати.Я думаю, что вы немного усложнили государственную часть.Я изменил его для вас, а также удалил ключевое слово bind
, которое, как мне кажется, не требуется, если вы используете последнюю спецификацию JS lang.
Я использовал Object.assign
просто для предотвращения мутации объекта состояния.Обычно этого можно избежать, используя ImmutableJS (пожалуйста, прочитайте документацию)
// Reducer.
const updateReducer = (state = {text:''}, action) => {
switch (action.type) {
case UPDATE_TEXT:
return Object.assign({}, state, { text: action.text });
default:
return state;
}
};
const mapStateToProps = state => {
return {
text: state.text
};
};
И метод визуализации:
render() {
return (
<div>
<input type="text" onChange={(...arg) => this.changeText(...arg)} />
<p>{this.props.text}</p>
</div>
);
}
Что не так с вашим исходным кодом?
Вы сохраняли весь текст в массиве для каждого нажатия клавиши вместе с обновленным и растущим текстом.При рендеринге просто отобразите последнюю (созданные ненужные копии в массиве, который никогда не используется) и пропустите другие значения массива.Вместо этого просто замените старое значение текущим входящим значением.
Ваш код Forked здесь
Happy Coding!