我想动态地包含/省略按钮元素上的disabled属性.我见过很多动态属性值的例子,但没有看到属性本身.我有以下渲染功能:

render: function() {
    var maybeDisabled = AppStore.cartIsEmpty() ? "disabled" : "";
    return <button {maybeDisabled}>Clear cart</button>
}

由于"{"字符,这会引发分析错误.如何基于AppStore.cartIsEmpty()的(布尔)结果包括/忽略禁用的属性?

推荐答案

添加可选属性(包括disabled和您可能想要使用的其他属性)的最干净方法是当前使用JSX spread attributes:

var Hello = React.createClass({
    render: function() {
        var opts = {};
        if (this.props.disabled) {
            opts['disabled'] = 'disabled';
        }
        return <button {...opts}>Hello {this.props.name}</button>;
    }
});

React.render((<div><Hello name="Disabled" disabled='true' />
    <Hello name="Enabled"  />
</div>)
, document.getElementById('container'));

通过使用spread属性,您可以通过使用javascript对象实例动态添加(或覆盖)任何想要的属性.在我上面的示例中,当disabled属性传递给Hello组件实例时,代码会创建一个disabled键(本例中为disabled值).

如果你只想用disabledthis答案很好.

Reactjs相关问答推荐

在此上下文中如何在缓冲(隐藏)视频和渲染视频之间切换?

如何在Pivot模式下自定义标题?

安装后未渲染tailwind

可选链和useState挂钩

在Reaction+Redux+RTKQuery中对API调用进行排序

以下代码是否存在安全问题?

ReactJs;Reaction-Hook-Form:仅当 Select 了特定 Select 列表选项时才显示文本输入

FireBase Reaction Native-在呈现视图之前等待响应

Next.js Next-Auth登录函数重定向到http://localhost:3000/api/auth/error

未定义发送的数据无法在reactjs中找到原因

shadcn输入+窗体+Zod;一个部件正在改变要被控制的不受控制的输入;

React-chartjs-2:红色和绿色之间的差距

在React中使用if条件时如何更改Tailwind中元素的文本 colored颜色

无法使axiosmockadapter正常工作

BrowserRouter改变了URL但没有链接到页面

如何读取 null 的属性?

如何到达类组件中的状态?

FlatList 不在 React Native 中呈现项目

Suspense/Await - 解析数据加载/保存到状态后无限循环

React Native Realm 应用程序在发布构建后崩溃