P粉5452181852023-08-21 13:12:17
juandemarco's answer is usually correct, but there is another option here.
Construct an object to your liking:
var inputProps = { value: 'foo', onChange: this.handleChange }; if (condition) { inputProps.disabled = true; }
Use spread for rendering, and you can also choose to pass other props.
<input value="这个值会被inputProps覆盖" {...inputProps} onChange={overridesInputProps} />
P粉8632950572023-08-21 11:18:48
Obviously, for some properties, if the value passed to React is not a true value, React will intelligently omit the property. For example:
const InputComponent = function() { const required = true; const disabled = false; return ( <input type="text" disabled={disabled} required={required} /> ); }
will get:
<input type="text" required>
UPDATE: If anyone is curious about how and why this happens, you can find the details in the source code of ReactDOM, specifically in the DOMProperty.js file at page 30 Lines and 167 lines .