I built my own React select component and would like to have an option to set the default value to be disabled
The component basically looks like this:
<select
id={this.props.id}
name={this.props.name}
value={this.props.value}
defaultValue={this.props.default}
onClick={this.handleFieldClick}
onChange={this.handleFieldChange} >
<option value="" disabled={this.defaultDisabled ? true : false} >{this.props.defaultLabel}</option>
{ Object.keys(this.props.options).map((val, i) => (
<option key={i} value={val}>{this.props.options[val]}</option>
))}
</select>
This line giving me the issue is the following:
<option value="" disabled={this.defaultDisabled ? true : false} >{this.props.defaultLabel}</option>
The "disabled" option is still selectable and renders like this:
<option value="" selected="">Default Option</option>
I believe it's because the correct syntax for a disabled option is <option disabled ></option>
, not <option disabled="true" ></option>
But when I format my JSX as follows:
<option value="" {this.defaultDisabled ? "disabled" : ""} >{this.props.defaultLabel}</option>
I get an error that crashes the app.
What is the correct syntax for conditionally writing a directive value into a tag with JXS and/or conditionally set a disabled option in React?
<option disabled={true}>...</option>
should render as<option disabled>...</option>
, so it should behave as you want. When you say you're getting an issue from that, what issue exactly, and where is that issue coming from? – Beatrizdisabled
option is still selectable – Scyphatedisabled={this.defaultDisabled ? true : false}
should bedisabled={this.props.defaultDisabled ? true : false}
(you missed a.props
). Assuming that's coming directly from your code that would explain the issue. – Beatriz