使用 React 和 Mobx 处理变化
handleChange with React and Mobx
在我的网络应用程序的第 2 步中,在 MobX 存储中分配了一个可观察的字符串值。然后在触发第 3 步组件渲染时将其渲染为文本区域值。
我一直在关注 https://reactjs.org/docs/forms.html 上的 React 文档来处理对 textarea 值的手动更改,但没有成功。
我在第 3 步功能组件中的文本区域(从 Semantic UI React 导入):
<TextArea autoHeight
value={ ui_store.final_text_message }
className={ textarea_style }
onChange={ () => update_final_textarea }
/>
同一组件中的更改处理程序:
const update_final_textarea = (text_input) => {
ui_store.set_final_text_message(text_input.target.value);
console.log(text_input.target.value);
};
改变控制状态的可观察值的 mobx 动作:
set_final_text_message(input_message) {
this.final_text_message = input_message
}
从我的控制台看,本地更改处理程序似乎没有启动。我在文本区域中退格并按下字符,但第 2 步中的文本被锁定在那里,没有改变。
谁能发现我当前的错误?谢谢
您没有在内联箭头函数中调用 update_final_textarea
函数。您可以将函数本身提供给 onChange
道具。
<TextArea
autoHeight
value={ui_store.final_text_message}
className={textarea_style}
onChange={update_final_textarea}
/>
如果您愿意,也可以将所有逻辑内联。
<TextArea
autoHeight
value={ui_store.final_text_message}
className={textarea_style}
onChange={event => ui_store.set_final_text_message(event.target.value)}
/>
在我的网络应用程序的第 2 步中,在 MobX 存储中分配了一个可观察的字符串值。然后在触发第 3 步组件渲染时将其渲染为文本区域值。
我一直在关注 https://reactjs.org/docs/forms.html 上的 React 文档来处理对 textarea 值的手动更改,但没有成功。
我在第 3 步功能组件中的文本区域(从 Semantic UI React 导入):
<TextArea autoHeight
value={ ui_store.final_text_message }
className={ textarea_style }
onChange={ () => update_final_textarea }
/>
同一组件中的更改处理程序:
const update_final_textarea = (text_input) => {
ui_store.set_final_text_message(text_input.target.value);
console.log(text_input.target.value);
};
改变控制状态的可观察值的 mobx 动作:
set_final_text_message(input_message) {
this.final_text_message = input_message
}
从我的控制台看,本地更改处理程序似乎没有启动。我在文本区域中退格并按下字符,但第 2 步中的文本被锁定在那里,没有改变。
谁能发现我当前的错误?谢谢
您没有在内联箭头函数中调用 update_final_textarea
函数。您可以将函数本身提供给 onChange
道具。
<TextArea
autoHeight
value={ui_store.final_text_message}
className={textarea_style}
onChange={update_final_textarea}
/>
如果您愿意,也可以将所有逻辑内联。
<TextArea
autoHeight
value={ui_store.final_text_message}
className={textarea_style}
onChange={event => ui_store.set_final_text_message(event.target.value)}
/>