【发布时间】:2020-12-25 04:50:03
【问题描述】:
我正在尝试将一个道具传递给一个相对的孩子做出反应,只有当它满足某些条件时。
我知道你可以像这样设置一种条件来发送道具:
<SomeComponent
ConditionalProp={
(this.state.exampleData === 'some string') ? this.state.exampleData : null
}
/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
但我需要做更多的验证,到目前为止,这就是我所拥有的:
<MyComponent
ConditionalProps={
(this.props.channel && this.props.some) ?
(this.props.some.conv && (this.props.some.conv.id === this.props.channel.conv.id) ?
this.props.channel :''
(this.state.contentId === this.props.channel)? this.props.channel:''
): null
}
/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
让我解释一下,我想做的是:如果 channel 和 some 存在,将验证两种可能的情况:如果 some.conv 存在并且 some.conv.id 是 === channel.conv.id?那么它必须作为道具通道传递。
如果为 false 且 contentId 存在且与 channel 完全相等,则通过 channel。
如果这两种情况都不成立,则必须传递 null 或空字符串 ''(我对这两种情况都没有问题)
我不太确定我所做的是否正确,我确信这不是执行它的最佳方式
【问题讨论】:
标签: javascript html reactjs web-applications