我知道JSX可能会非常误导人,因为它看起来像字符串,而实际上不是,因此问题中的"字符串"术语,即使我们不是真的在操纵字符串.

下面是一个代码示例(显然是错误的):

let line = <Line key={line.client_id} line={line}/>;
if(line.created_at) {
    return <div className="date-line"><strong>{line.created_at}</strong></div> + line;
} else {
    return chat_line;
}

我有一行,我想在特定条件下"连接"前面的一些div.正确的语法是什么?

谢谢

推荐答案

使用数组:

let lineComponent = <Line key={line.client_id} line={line}/>;
if (line.created_at) {
  return [
    <div key="date" className="date-line"><strong>{line.created_at}</strong></div>,
    lineComponent,
  ];
} else {
  return chat_line;
}

或者使用片段:

import createFragment from "react-addons-create-fragment";

let lineComponent = <Line key={line.client_id} line={line}/>;
if (line.created_at) {
  return createFragment({
    date: <div className="date-line"><strong>{line.created_at}</strong></div>,
    lineComponent: lineComponent,
  });
} else {
  return chat_line;
}

在这两种情况下,你都必须达到provide keys for React.对于数组,可以直接在元素上设置键.关于片段,您提供键:元素对.

注:

Reactjs相关问答推荐

迁移到React Router Dom v6后,我是否错误地使用了Link组件?

单击按钮时在子元素中不显示任何内容-react

Formik验证不适用于物料UI自动完成

安装后未渲染tailwind

值在返回页面时不更新,即使我已经更新了它们

Symfony ux-react:使用react_component()时React组件不会渲染

将 useRef 与 useImperativeHandle 一起使用时,React 不会重新渲染

Mui 在 TextField 标签上添加工具提示显示两个工具提示框

useEffect 内的 onClick 和 addEventListener 之间的 click 事件顺序差异

REACT: UseState 没有更新变量(ant design 模态形式)

如何在next.js 13中仅在主页导航栏上隐藏组件?

antd 找不到 comments

在 Reactjs 中状态发生变化时渲染一个新组件而不替换旧组件

调用 Jest 和服务方法的问题

如何通过 Material ui select 使下拉菜单下拉

无法重用我的组件,它只显示 1 次

找不到元素 - 这是参考问题吗?

React useEffect hooks return () => cleanup() vs return cleanup

在 redux 状态更改时更新react 按钮禁用状态

Material UI 安装和 React v. 18.2 出现问题