ReactSelect V2和V3似乎有几个props,如clearValue
,resetValue
和setValue
。无论我在尝试什么,我都无法以编程方式清除选择。resetValue
似乎无法从外部访问。
selectRef.setValue([], 'clear')
// or
selectRef.clearValue()
这不会清除当前选择。
我在这里错过了什么还是还没有完全实施?
ReactSelect V2和V3似乎有几个props,如clearValue
,resetValue
和setValue
。无论我在尝试什么,我都无法以编程方式清除选择。resetValue
似乎无法从外部访问。
selectRef.setValue([], 'clear')
// or
selectRef.clearValue()
这不会清除当前选择。
我在这里错过了什么还是还没有完全实施?
如果您使用的是react-select,您可以尝试传递null
给value
prop。
例如:
import React from "react";
import { render } from "react-dom";
import Select from "react-select";
class App extends React.Component {
constructor(props) {
super(props);
const options = [
{ value: "one", label: "One" },
{ value: "two", label: "Two" }
];
this.state = {
select: {
value: options[0], // "One" as initial value for react-select
options // all available options
}
};
}
setValue = value => {
this.setState(prevState => ({
select: {
...prevState.select,
value
}
}));
};
handleChange = value => {
this.setValue(value);
};
handleClick = () => {
this.setValue(null); // here we reset value
};
render() {
const { select } = this.state;
return (
<div>
<p>
<button type="button" onClick={this.handleClick}>
Reset value
</button>
</p>
<Select
name="form-field-name"
value={select.value}
onChange={this.handleChange}
options={select.options}
/>
</div>
);
}
}
render(<App />, document.getElementById("root"));
这是一个工作示例。
我自己遇到了这个问题,并设法通过将 a 传递key
给 React-Select 组件来修复它,并将选定的值附加到它。这将ReactSelect
在选择更新时强制重新渲染自身。
我希望这可以帮助别人。
import ReactSelect from 'react-select';
...
<ReactSelect
key={`my_unique_select_key__${selected}`}
value={selected || ''}
...
/>
您可以使用 ref 清除 react select 的值。
import React, { useRef } from "react";
import Select from "react-select";
export default function App() {
const selectInputRef = useRef();
const onClear = () => {
selectInputRef.current.select.clearValue();
};
return (
<div className="App">
<h1>Select Gender</h1>
<Select
ref={selectInputRef}
options={[
{ value: "male", label: "Male" },
{ value: "female", label: "Female" }
]}
/>
<button onClick={onClear}>Clear Value</button>
</div>
);
}
这是 CodeSandbox链接
只需将值存储在状态中,然后使用 componentDidUpdate 等以编程方式更改状态...
class Example extends Component {
constructor() {
super()
}
state = {
value: {label: 'Default value', key : '001'}
}
render() {
return(
<Select
...
value={this.state.value}
...
/>
)
)}
注意:'value' 应该是一个对象。
一个简单的选择是传递null
给value
props。
<Select value={null} />