semantic ui react Setting dropdown value to state

28,862

Solution 1

handleChange = (e, { value }) => this.setState({ value })

Add value prop to Dropdown

      render(
          const { value } = this.state;
        return(
         <Dropdown 
         placeholder='Select Subject'
         name="subject"
         onChange={this.handleChange}
         selection 
         options={subjects} 
         value={value}
         />)
       )

Solution 2

If anyone is using react hooks and semantic ui react, this is how I got it to work, without having to create a separate change handler function for it.

const options = [
    { key: "1", text: "Speaker", value: "SPEAKER" },
    { key: "2", text: "Event Planner", value: "EVENT_PLANNER" }
  ];

const [values, setValues] = useState({
    firstName: "",
    userType: ""
  });

const onChange = (event, result) => {
    const { name, value } = result || event.target;
    setValues({ ...values, [name]: value });
  };

<Form.Dropdown
  placeholder="I am a.."
  name="userType"
  label="User Type"
  selection
  onChange={onChange}
  options={options}
  value={values.userType}
  />

What kept throwing me off was the 'result' that the onChange function takes as an argument. Since the options are stored as objects in an array, the correct way to access their values is with the 'result' and not 'event.target.'

Solution 3

One more way to use DropDown in React Semantic. it worked perfectly for me.

const options = [
    { key: 'ex1', text: 'Example 1', value: 'Example 1' },
    { key: 'ex2', text: 'Example 2', value: 'Example 2' },
]

Method to set value

handleSelectChange=(e,{value})=>this.setState({stateValue:value})

In Form

<Form.Select fluid label='List Example' options={options}
placeholder='List Example' 
value={value} 
onChange={this.handleSelectChange} />
Share:
28,862
Srikanth Gowda
Author by

Srikanth Gowda

Senior Software Engineer @ Robosoft

Updated on October 29, 2020

Comments

  • Srikanth Gowda
    Srikanth Gowda over 3 years

    how to have dropdowns selected value in state.here is my code iam getting value for name field but dropdown not working, can anyone find out what i am missing?

    MyComponent.js

    import React,{Component} from 'react';
    
    class MyComponent extends Component{
    state={
       data:{
           name:'',
           subject:''  
       }
    }
    
     onChange = e =>
        this.setState({
            data: { ...this.state.data, [e.target.name]: e.target.value }
        },()=>{
            console.log(this.state.data);
        }
        )
    
    render(){
    const {data}=this.state;
    const subjects= [
                  {text: '1',value: 'kannada'},
                  {text: '2', value: 'english'},
                  {text: '3',value: 'hindhi'}
                ]
    return(
    <div>
                <Input 
                 name="name"
                 onChange={this.onChange} 
                 placeholder='Your name ...' 
                />
                <Dropdown 
                 placeholder='Select Subject'
                 name="subject"
                 onChange={this.onChange}
                 selection 
                 options={subjects} 
                 />
    </div>
    
    )
    }
    }
    export default MyComponent;
    

    how to have selected dropdown value in state?, iam getting changed value for name field but for dropdown not getting.