javascript - 在 React 中创建表单时 .map() 不会正确填充选择 > 选项,但适用于普通 div
问题描述
我正在使用 React(和 Redux)并且有一个表单,我需要通过 API 调用用数据填充下拉列表。
当我.map()
在标准 div 中使用时,结果列表输出正确。这是代码:
<div>
{categories &&
categories.map((category, i) => (
<option
key={i}
label={category.categoryName}
value={category._id}
name={category.categoryName}
category={category}
>
{category.categoryName}
</option>
))}
</div>
然后,当我尝试在选择/选项下拉列表中映射相同的数据时,它只会呈现第一个结果。即没有下拉菜单。这是这段代码:
<select
value={categoryName}
onChange={(e) => setCategoryName(e.target.value)}
>
{categories &&
categories.map((category, i) => (
<option
key={i}
label={category.categoryName}
value={category._id}
name={category.categoryName}
category={category}
>
{category.categoryName}
</option>
))}
提前感谢您提供的任何其他见解。
编辑添加动作和减速器:
export const getCategories = () => async (dispatch) => {
try {
const config = {
headers: {
"Content-Type": "application/json",
},
};
const res = await axios.get(
"http://localhost:5000/category/getallcategories",
config
);
dispatch({
type: GET_CATEGORIES,
payload: res.data,
});
console.log("2222" + res.data);
} catch (err) {
dispatch({
type: CATEGORY_ERROR,
payload: { msg: err.response.statusText, status: err.response.status },
});
}
};
和减速机:
export default function (state = initialState, action) {
const { type, payload } = action;
switch (type) {
case GET_CATEGORIES:
return {
...state,
categories: payload,
loading: false,
};
解决方案
<select>
标签应包含该值。在您的情况下,它是状态:taskTitle
. Onchange 也应该处于选中状态。在您的代码中,您使用此 useState:
const [taskTitle, setTaskTitle] = useState("");
所以尝试将选择更改为:
<select
value={taskTitle}
onChange={(e) => setTaskTitle(e.target.value)}>
{categories &&
categories.map((category, i) => (
<option
key={i}
label={category.categoryName}
value={category._id}
name={category.categoryName}
category={category}
>
{category.categoryName}
</option>
))}
</select>
推荐阅读
- vba - 从范围对象设置 ws-reference - 运行时错误 9?
- typo3 - 处理包含 id 的 url 时如何忽略 cHash?
- javascript - Laravel 5.5,使用 3 个下拉按钮过滤器而不重置第一个和第二个过滤器
- image - 如何在 Delphi 2010(VCL) 中使用鼠标平移图像
- vba - 每个唯一键的多个字典(VBA)
- reactjs - 更新了 react-native,现在它不会构建
- objective-c - 我如何以编程方式停止使用 Thread 为 UIActivityIndicatorView 设置动画
- css - 内部 CSS 不适合我
- python - 为什么这个条件不会引发异常:(1==0 <= 1/0) == False?Python如何解析这个?
- java - 通过JSON解析并在java中选择多个项目