I have a ReactJS
component:
var RegionsList = React.createClass({
handleChange: function () {
var regionId = this.refs.userRegions.getDOMNode().value;
this.props.onRegionSelected(regionId);
},
componentDidMount: function() {
$.get("/translation/activeuserregions", function(result) {
if(this.isMounted()) {
this.setState({
selectedRegionId: result.SelectedRegionId,
regions: result.Regions
})
}
}.bind(this));
},
getInitialState: function(props) {
return {
selectedRegionId: '',
regions: []
}
},
render: function() {
return (
<div id="RegionsListForm" className="navbar-form navbar-left regions-list">
<div className="input-group navbar-searchbox">
<span className="input-group-addon">
<span>Region</span>
</span>
<select ref="userRegions" onChange={this.handleChange} defaultValue={this.state.selectedRegionId} className="form-control valid" id="region" name="region" aria-invalid="false">
{this.state.regions.map(function(region) {
return <option key={region.Id} value={region.Id} label={region.RegionName}>{region.RegionName}</option>
})}
</select>
</div>
</div>
);
},
})
It appears to work correctly. But initially it does not render with the correct item selected. Although the defaultValue
appears to be set correctly so I don't understand why.
What am I doing wrong?
To fetch the selected value from the select element, you can use the onChange event handler prop. Just like the input or textarea elements, you can use the onChange event handler to get the value from the event object. Now, make this select input element controlled by using the state to pass the value.
Set a default valueIn the Navigation Pane, right-click the form that you want to change, and then click Design View. Right-click the control that you want to change, and then click Properties or press F4. Click the All tab in the property sheet, locate the Default Value property, and then enter your default value.
You can use an attribute defaultValue to set the default value in the Select menu If none option is integrated with this attribute first option is selected by default. You can create an Array of the object where you will store all options to be displayed and any single object is passed in the defaultValue attribute.
How to use HTML <select> tag in ReactJS ? HTML <select> tag is used to create a drop down list with multiple options. The <select> tag is used as outer element and the <option> element is nested within <select> tag for defining options in a list.
When the <select>
is initially mounted, the default value is ''
. Once an uncontrolled form component is in the DOM, React doesn't look updates to the defaultValue
prop. In this case it looks like your intention is to always have the selectedRegionId
state match what's shown to the user, so you may want to change defaultValue
to value
and add a this.setState({selectedRegionId: regionId});
call to your onChange handler; then your component state and the DOM will always be in sync.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With