Quelqu'un peut-il m'aider à utiliser onChange dans la liste déroulante (Semantic UI React). Je lis les documents, mais je ne comprends pas. Il a des accessoires onChange.
onChange(event: SyntheticEvent, data: object)
Comment est-ce que je l'utilise? Comme, j'ai la méthode dropdownmethod()
.
edit - implémenté la suggestion, mais cela n'a pas fonctionné. Je pense que dans votre suggestion, vous n'avez pas lié la fonction. Mais, je lie la fonction.
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>
Comme indiqué dans la documentation, il vous suffit de passer une référence de votre méthode et vous obtiendrez alors 2 paramètres:
L'événement natif
L'objet de l'option sélectionnée
Voici un extrait de code (il utilise un CDN mais envoie des avertissements de débogage, alors ignorez-les)
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'));
<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/[email protected]/dist/umd/semantic-ui-react.min.js"></script>
<div id="root"></div>
Modifier
Pour faire suite à votre commentaire.
J'ai vérifié l'exemple. Même là quand je tape quelque chose, ça ne me montre rien dans la console
Vous ne parlez pas de onChange
du select
dont vous parlez lorsque l'entrée de recherche a changé.
Vous pouvez utiliser onSearchChange
avec les mêmes paramètres. (J'ai mis à jour l'exemple)
utiliser l'événement onChange pour détecter les modifications dans la liste déroulante
onSearchChange={(e, v) => {
changeMethod(e, v)
}}
utiliser l'événement onSearchChange pour détecter l'entrée de recherche
onSearchChange={(e, v) => {
searchMethod(e, v)
}}
et vous devez définir searchMethod et changeMethod comme consts en haut de votre page.
J'ai implémenté comme ci-dessous
La fonction React hooks est comme ci-dessous, si vous préférez, vous pouvez également passer handleOnChange
comme accessoire
const RenderDropdown = ({optionsArray}) => {
const handleOnChange = (e, data) => {
console.log(data.value);
}
return (
<Dropdown
placeholder='Please select'
fluid
selection
options={optionsArray}
onChange={handleOnChange}
/>
);
}
tableau d'options comme ci-dessous
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' },
}
]
Voici le code de travail de la vôtre:
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>
)
}