React组件中如何根据条件动态添加属性?
P粉665427988
P粉665427988 2023-08-20 14:54:00
0
2
601
<p>是否有一种方法,只有在满足特定条件时才向React组件添加属性?</p> <p>我需要在渲染后的Ajax调用中根据条件向表单元素添加required和readOnly属性,但我不知道如何解决这个问题,因为<code>readOnly="false"</code>与完全省略属性不同。</p> <p>下面的示例应该说明我想要的,但它不起作用。</p> <blockquote> <p>(解析错误:意外的标识符)</p> </blockquote> <pre class="brush:js;toolbar:false;">function MyInput({isRequired}) { return <input classname="foo" {isRequired ? "required" : ""} /> } </pre> <p><br /></p>
P粉665427988
P粉665427988

全部回复(2)
P粉545218185

juandemarco的答案通常是正确的,但这里还有另一种选择。

按照您的喜好构建一个对象:

var inputProps = {
  value: 'foo',
  onChange: this.handleChange
};

if (condition) {
  inputProps.disabled = true;
}

使用spread进行渲染,还可以选择传递其他props。

<input
    value="这个值会被inputProps覆盖"
    {...inputProps}
    onChange={overridesInputProps}
 />
P粉863295057

显然,对于某些属性,如果传递给React的值不是真值,React会智能地省略该属性。例如:

const InputComponent = function() {
    const required = true;
    const disabled = false;

    return (
        <input type="text" disabled={disabled} required={required} />
    );
}

将会得到:

<input type="text" required>

更新:如果有人对此如何发生以及为什么发生感到好奇,你可以在ReactDOM的源代码中找到详细信息,具体位于DOMProperty.js文件的第30行和167行

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板