我正在尝试根据另一个Dropdown的值来切换Dropdown的可见性。因此,当选择第一个选项时,第二个下拉列表将在下方显示,当不再选择该选项时,下面的下拉列表将消失。
我还在学习,请耐心等待。任何建议或帮助将不胜感激!以下是我到目前为止的情况:
const firstOptions = [
{ key: 0, value: 'default', text: '--Select an Option--' },
{ key: 1, value: 'option1', text: 'option1 - when I am selected another shall appear' },
{ key: 2, value: 'option2', text: 'option2' },
{ key: 3, value: 'option3', text: 'option3' },
];
const secondOptions = [
{ key: 0, value: 'default', text: '--Select an Option--' },
{ key: 1, value: 'option1', text: 'option1' },
{ key: 2, value: 'option2', text: 'option2' },
];
class DropdownToggle extends Component {
constructor(props) {
super(props);
this.state = {
selectedValue: 'default',
};
}
handleChange = (e) => {
this.setState({ selectedValue: e.target.value });
}
render() {
const message = 'You selected ' + this.state.selectedValue;
return (
<div style={{ marginTop: '50px', marginLeft: '50px' }}>
<Dropdown
options={firstOptions}
selection
value={this.state.selectedValue}
onChange={this.handleChange}
/>
<div style={{ marginTop: '50px' }}>
<Dropdown
options={secondOptions}
selection
/>
</div>
<p>{message}</p>
</div>
);
}
}
&#13;
答案 0 :(得分:2)
您可以进行条件渲染以实现所需的行为。
示例强>
render() {
const message = 'You selected ' + this.state.selectedValue;
return (
<div style={{ marginTop: '50px', marginLeft: '50px' }}>
<Dropdown
options={firstOptions}
selection
value={this.state.selectedValue}
onChange={this.handleChange}
/>
{
this.state.selectedValue === 'option1' ?
<div style={{ marginTop: '50px' }}>
<Dropdown
options={secondOptions}
selection
/>
</div>
: null
}
<p>{message}</p>
</div>
);
}
<强>更新强>
您的handleChange
功能不正确。根据Semantic-UI文档onChange
使用2个参数触发。 event
和data
。如果你改变你的功能,它应该工作。
onChange {func}
当用户尝试更改值时调用。
onChange(事件:SyntheticEvent,data:object)
event React的原始SyntheticEvent。
数据所有道具和建议值。
handleChange = (event, data) => {
console.log(data.value);
this.setState({selectedValue: data.value});
}
答案 1 :(得分:1)
我的解决方案使用React Hooks,并且我从state
的上下文中利用React.FunctionComponent<ITypeProps>
,并在生成的dropdown
中检测当前元素以设置{{1 }}(通过添加Bootstrap样式类来隐藏/显示元素)。
为简化逻辑,我描述了一个未生成的下拉列表及其关联的onChange事件。
通过钩子,您可以通过执行单个函数调用来使用函数的React功能(例如状态)。
根据Making Sense of React Hooks。
state
这将做什么:
const Manager: React.FunctionComponent<ITypeProps> = ({}) => {
const [state, setState] = React.useState({
showElement: false
});
const handleChange = (value) => {
if (value && (value == 1)
setState({ ...state, showElement: true });
else
setState({ ...state, showElement: false });
}
return
<div>
<select>
<option value="1" onChange={handleChange}>Item1 + Show Div</option>
<option value="2" onChange={handleChange}>Item2</option>
<option value="3" onChange={handleChange}>Item3</option>
</select>
<div className={state.showElement ? "d-block" : "d-none"}> Hide / Show me!</div>
</div>
}
将为showElement
true
将为false showElement
和d-block
的样式“ display:block”或“ display:none”。我花了太长时间研究这个非常简单的React功能。
因此,希望这个简单的示例可以帮助某人并为您节省一些时间!