reactjs - 访问 ReactElements 列表中的 Redux Store
问题描述
我有一个这样的列表:
const form = [
<Input title="What is your age?" onSubmit={} />, // this onSubmit sets age
<MultipleChoice title="What is the weather today?" onSubmit={} />, // this onSubmit sets weather
<Input title="What is the brand of your rain coat?" onSubmit={} /> // this onSubmit sets rainCoatBrand
]
注意:上面的列表没有在 React 组件内部定义。我也有这样的店:
age: number;
weather: string;
rainCoatBrand: string;
对于 中的每个元素form
,如何设置onSubmit
方法以使用我想要的值更新商店?谢谢!
解决方案
您可以使用store.dispatch()从反应组件外部实现此目的。请注意,要使其正常工作,您需要在某处定义减速器以处理分派的操作并相应地更新存储。
import { store } from './storepath';
const form = [
<Input
title="What is your age?"
onSubmit={() => store.dispatch({ // redux action payload })}
/>,
<MultipleChoice
title="What is the weather today?"
onSubmit={() => store.dispatch({ // redux action payload })}
/>
<Input
title="What is the brand of your rain coat?"
onSubmit={() => store.dispatch({ // redux action payload })}
/>
]
要从输入中访问实际值,您需要修改输入组件本身来处理这个问题。
例如
export const MultipleChoice = (props) => {
const [value, setValue] = useState();
...
return <div title={props.title} onSubmit={() => props.onSubmit(value)}/>
}
const form = [
<MultipleChoice
title="What is the weather today?"
onSubmit={(payload) => store.dispatch({ type: 'UPDATE_WEATHER', payload })}
/>,
...
]
推荐阅读
- html - navbar-brand 图像重叠 nav-items
- ajax - 如何检测 VueJS 中的响应?
- node.js - 即使将 nodeIntegration 设置为 true,Electron window.require 也不是函数
- reactjs - 使用 React Hooks 从登录/注册页面重定向登录用户
- r - R中名称的缩写向量,使用stringr库
- r - R创建重复的日期给定值
- regex - 关于在 FS 中包含一个带有转义字符的空格的基本 awk 问题
- html - Angular 在带有引导程序的 mat 日期选择器中将列表显示为工具提示?
- python - 抓取维基百科信息(表格)
- python - 数据标准化后如何使用 K-Nearest Neighbors (KNN) 模型进行预测 (Python)