javascript - 如何在React组件中进行两次条件检查

标签 javascript reactjs react-native react-redux boolean

我有一个 React 组件,如图所示。我正在传递 prop hasItems 并基于此 boolean 值,我将显示 PaymentMessage 组件或显示 AddItemsMessage 组件。

export const PayComponent = ({
  hasItems
}: props) => {
  return (
    <Wrapper>
      {hasItems ? (
        <PaymentMessage />
      ) : (
        <AddItemsMessage />
      )}
      <Alerts
        errors={errors}
      />
    </Wrapper>
  );
};

这个效果很好。现在,我需要传递另一个 Prop ( paymentError )。因此,基于此,我将 JSX 修改如下。我将使用评论部分突出显示我添加的部分,以便更容易看到。

export const PayComponent = ({
  hasItems,
  paymentError //-----> added this
}: props) => {
  return (
    <Wrapper>
  {!paymentError ? ( //----> added this. This line of code errors out
      {hasItems ? (
        <PaymentMessage />
      ) : (
        <AddItemsMessage />
      )}
):(  //-----> added this
      <Alerts
        errors={errors}
      />
) //-----> added this
    </Wrapper>
  );
};

基本上,我将再获取一个输入属性并修改我的 JSX 的外观。但在这种情况下,我无法在错误后添加一个 boolean 比较。在这种情况下我该如何让它工作。有什么建议吗???

最佳答案

我建议您创建一个函数来处理此行为。更容易阅读和维护

export const PayComponent = ({
  hasItems,
  paymentError
}: props) => {
  const RenderMessage = () => {
    if (hasItems) {
      if (paymentError) {
        return <PaymentMessage />
      }
      return <AddItemsMessage />
    }
    return <Alerts errors={errors}/>
  };

  return (
    <Wrapper>
      <RenderMessage />
    </Wrapper>
  );
};

关于javascript - 如何在React组件中进行两次条件检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59493749/

相关文章:

react-native - 如何修复 "Error: Failed to start the transport ' WebSockets : null "in reactnative using @aspnet/signalr library?

react-native - onContentSizeChange 不会触发 Android 上的高度变化(react-native)

javascript - 添加过渡到 Zoomable Circle Packing

javascript - Firefox 不会触发点击事件

javascript - 如何在发出 JQuery 请求时我的服务器关闭/不可用时显示错误消息?

javascript - 无论选择了哪个选项卡,每次都会调用所有 React-bootstrap Tabs 渲染函数

javascript - 如何处理 json

reactjs - 重用另一个组件的方法

javascript - react : HTML not rendering correctly

android - 将 React 或 React Native 嵌入到现有的移动应用程序中