有人可以帮我解决如何在下拉列表中使用onChange(语义UI反应)。我正在阅读文档,但我仍然没有得到它。它确实有onChange道具。
onChange(event: SyntheticEvent, data: object)
我该如何使用它?就像,我有方法dropdownmethod()
。
编辑 - 实施了建议,但它没有奏效。我认为在你的建议中,你并没有绑定这个功能。但是,我绑定了该功能。
onChangeFollower(event,data){
console.log("on change follower",data.text)
}
render() {
console.log("this.props",this.props)
var onChangeFollower = this.onChangeFollower.bind(this)
return (
<div>
<h2>project settings are here</h2>
<h2>Add new Member</h2>
<Dropdown onChange={onChangeFollower}
placeholder='Select Member'
fluid search selection options={arr} />
<h2>List of members</h2>
{lr}
</div>
答案 0 :(得分:7)
如文档中所述,您只需要传递方法的引用,然后您将获得2个参数:
原生事件
所选选项的对象
这是一段代码片段(它使用CDN但会抛出一些调试警告,所以请忽略它们)
const { Dropdown } = semanticUIReact;
const languageOptions = [
{ key: 'eng', text: 'English', value: 'eng' },
{ key: 'spn', text: 'Spanish', value: 'spn' },
{ key: 'rus', text: 'Russian', value: 'Russian' },
]
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
searchQuery: '',
selected: null
}
}
onChange = (e, data) => {
console.log(data.value);
this.setState({ selected: data.value });
}
onSearchChange = (e, data) => {
console.log(data.searchQuery);
this.setState({ searchQuery: data.searchQuery });
}
render() {
const { searchQuery, selected } = this.state;
return (
<div>
<Dropdown
button
className='icon'
fluid
labeled
icon='world'
options={languageOptions}
search
text={searchQuery}
searchQuery={searchQuery}
value={selected}
onChange={this.onChange}
onSearchChange={this.onSearchChange}
/>
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById('root'));
&#13;
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.2.9/semantic.min.css"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/semantic-ui-react@0.77.1/dist/umd/semantic-ui-react.min.js"></script>
<div id="root"></div>
&#13;
修改强>
作为您的评论的后续。
我检查了一些例子。即使在我输入内容时,它也不会显示给我 控制台中的任何内容
当搜索输入发生变化时,您不是在谈论您所谈论的onChange
select
。
您可以将onSearchChange
与相同的参数一起使用。 (我已经更新了这个例子)
答案 1 :(得分:1)
我已实现如下
反应钩子函数如下所示,如果您愿意,也可以通过handleOnChange
作为道具
const RenderDropdown = ({optionsArray}) => {
const handleOnChange = (e, data) => {
console.log(data.value);
}
return (
<Dropdown
placeholder='Please select'
fluid
selection
options={optionsArray}
onChange={handleOnChange}
/>
);
}
options数组如下
const optionsArray = [
{
key: 'male',
text: 'Male',
value: 'male',
image: { avatar: true, src: 'https://semantic-ui.com/images/avatar/small/elliot.jpg' },
},
{
key: 'female',
text: 'Female',
value: 'female',
image: { avatar: true, src: 'https://semantic-ui.com/images/avatar/small/stevie.jpg' },
}
]
答案 2 :(得分:0)
使用onChange事件检测下拉列表中的更改
onSearchChange={(e, v) => {
changeMethod(e, v)
}}
使用onSearchChange事件检测搜索输入
onSearchChange={(e, v) => {
searchMethod(e, v)
}}
,您必须在页面顶部将searchMethod和changeMethod定义为const。
答案 3 :(得分:-1)
以下是您的工作代码:
onChangeFollower(event, data){
console.log("on change follower",data.text)
}
render() {
console.log("this.props",this.props)
return (
<div>
<h2>project settings are here</h2>
<h2>Add new Member</h2>
<Dropdown onChange={this.onChangeFollower}
placeholder='Select Member'
fluid search selection options={arr} />
<h2>List of members</h2>
{lr}
</div>
)
}