use*_*203 5 javascript onchange reactjs react-select
我有一个我这样定义的react-select组件:
<Select
id="portf"
options={opts}
onChange={value => portfolioSelector(value)}
placeholder="Select Portfolio"
/>
Run Code Online (Sandbox Code Playgroud)
与opts = [{label: any, value:1}, {label:Two, value:2}]。
选择后的值将通过portfolioSelector功能存储在状态中。问题是当我选择一个值时,它没有显示在选择字段中。我的主要组成部分是:
const PortfolioSelector = ({
opts,
portfolioSelector
}) => {
if (opts) {
return (
<div className="portfolio select-box">
<label htmlFor="selectBox" className="select-box__label">
Portfolio
</label>
<div className="select-box__container">
<Select
id="portf"
options={opts}
onChange={value => portfolioSelector(value)}
placeholder="Select Portfolio"
/>
</div>
<div className="separator" />
</div>
);
}
return (
<div>Loading</div>
);
};
Run Code Online (Sandbox Code Playgroud)
你知道为什么吗?
小智 8
这是我使用的替代解决方案。
演示: https : //codesandbox.io/s/github/mkaya95/React-Select_Set_Value_Example
import React, { useState } from "react";
import Select from "react-select";
export default function App() {
const [selectedOption, setSelectedOption] = useState("none");
const options = [
{ value: "none", label: "Empty" },
{ value: "left", label: "Open Left" },
{ value: "right", label: "Open Right" },
{
value: "tilt,left",
label: "Tilf and Open Left"
},
{
value: "tilt,right",
label: "Tilf and Open Right"
}
];
const handleTypeSelect = e => {
setSelectedOption(e.value);
};
return (
<div>
<Select
options={options}
onChange={handleTypeSelect}
value={options.filter(function(option) {
return option.value === selectedOption;
})}
label="Single select"
/>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
<Select
options={this.props.locale}
onChange={this.selectCountryCode}
value={{label : this.state.selectedCountryLabel}}
/>
Run Code Online (Sandbox Code Playgroud)
value 属性需要形状数组。
首先,您创建了错误的数组,如果 label: any 或 Two 是字符串,则必须添加双引号。看这个:
opts = [{label: "any", value:1}, {label:"Two", value:2}]
Run Code Online (Sandbox Code Playgroud)
其次,您必须记住本例中的选项是 opts 是一个具有标签和值的对象数组,您想要添加到状态中的数据是什么?
<Select
id="portf"
options={opts}
onChange={value => portfolioSelector(value.value /* or if you want to add label*/ value.label)}
placeholder="Select Portfolio"
/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8996 次 |
| 最近记录: |