将整个数据传递给 select 标记中的 onChange
Pass the whole data to the onChange in a select tag
在 ReactJS 中,onClick 事件在 Google Chrome 浏览器中不起作用,但在 Firefox 中可以正常工作。当我在 select 内的 option 标签中添加带有箭头功能的 onClick 事件时,它在 Google 中的任何情况下都不起作用 Chrome.
<select>
{data.map( (item) => {
return(
<>
<option onClick={()=>alert('Test')} value={item.name} key={item.id}>{item.name}</option>
</>
)
})}
</select>
我实际上需要在 option tag
中调用带有一些参数的 ES6 箭头函数
<select>
{data.map( (item) => {
return(
<>
<option onClick={()=>LoadNew(item.id)} value={item.name} key={item.id}>{item.name}</option>
</>
)
})}
</select>
这在 Firefox 中运行良好,但在 Google Chrome 浏览器中不起作用。知道如何解决这个问题吗?
您需要将 onChange
属性传递给 select
标签,然后您可以从那里访问该值。
更新:
如果要访问整个数据,则需要使用 JSON.
<select
onChange={(e) => {
console.log(JSON.parse(e.target.value));
}}
>
{data.map((item) => {
return (
<>
<option value={JSON.stringify(item)} key={item.id}>
{item.name}
</option>
</>
);
})}
</select>
所以我想出了一个蛮力方法。因为您需要将项目的 ID 传递给 LoadNew 函数
export default function App() {
let data = [
{ name: "Love", id: 1 },
{ name: "labs", id: 2 }
];
return (
<div className="App">
<select
onChange={(e) => {
let item= data.filter((val) => val.name == e.target.value);
LoadNew(item.id)
}}
>
{data.map((item) => {
return (
<>
<option value={item.name} key={item.id}>
{item.name}
</option>
</>
);
})}
</select>
</div>
);
}
您可以通过在 select 标记上放置一个 onChange 事件侦听器来获取 selected 值。然后,在将项目的 id 传递给函数后,我们过滤数据以获取特定项目。
在 ReactJS 中,onClick 事件在 Google Chrome 浏览器中不起作用,但在 Firefox 中可以正常工作。当我在 select 内的 option 标签中添加带有箭头功能的 onClick 事件时,它在 Google 中的任何情况下都不起作用 Chrome.
<select>
{data.map( (item) => {
return(
<>
<option onClick={()=>alert('Test')} value={item.name} key={item.id}>{item.name}</option>
</>
)
})}
</select>
我实际上需要在 option tag
中调用带有一些参数的 ES6 箭头函数<select>
{data.map( (item) => {
return(
<>
<option onClick={()=>LoadNew(item.id)} value={item.name} key={item.id}>{item.name}</option>
</>
)
})}
</select>
这在 Firefox 中运行良好,但在 Google Chrome 浏览器中不起作用。知道如何解决这个问题吗?
您需要将 onChange
属性传递给 select
标签,然后您可以从那里访问该值。
更新:
如果要访问整个数据,则需要使用 JSON.
<select
onChange={(e) => {
console.log(JSON.parse(e.target.value));
}}
>
{data.map((item) => {
return (
<>
<option value={JSON.stringify(item)} key={item.id}>
{item.name}
</option>
</>
);
})}
</select>
所以我想出了一个蛮力方法。因为您需要将项目的 ID 传递给 LoadNew 函数
export default function App() {
let data = [
{ name: "Love", id: 1 },
{ name: "labs", id: 2 }
];
return (
<div className="App">
<select
onChange={(e) => {
let item= data.filter((val) => val.name == e.target.value);
LoadNew(item.id)
}}
>
{data.map((item) => {
return (
<>
<option value={item.name} key={item.id}>
{item.name}
</option>
</>
);
})}
</select>
</div>
);
}
您可以通过在 select 标记上放置一个 onChange 事件侦听器来获取 selected 值。然后,在将项目的 id 传递给函数后,我们过滤数据以获取特定项目。