【问题标题】:react-jsx-parser can't map contentreact-jsx-parser 无法映射内容
【发布时间】:2021-09-27 01:11:18
【问题描述】:

我正在使用react-jsx-parser npm 包,我有这个代码:

Builder.tsx

import JsxParser from "react-jsx-parser";

export default function Builder() {
  const a = `
              <>
                {data.map((el, i) => (
                  <div key={i}>{el}</div>
                ))}
              </>
             `;
  return <JsxParser bindings={{ data: [1, 2] }} jsx={a} />;
}

但这不起作用,我得到下面的错误,我做了一些研究,但找不到任何解决方案。

【问题讨论】:

    标签: javascript reactjs typescript jsx insertadjacenthtml


    【解决方案1】:

    您的data 可以成功通过。如果将a const 更改为以下内容,它将正确显示ab

    const a = `
        { data }
    `;
    
    

    在html中:

    ...
    <div>
    "a"
    "b"
    </div>
    ...
    

    我认为该库不够智能,无法逐字解析函数,因为它可能需要额外的工作来解释和评估代码。 如果你像下面这样对数组进行硬编码,它仍然会抛出同样的错误:

    const a = `
        { ["a", "b"].map((d) => d)}
    `;
    

    所以要得到你想要的,你可能需要在绑定部分处理和装饰数据。它可能是也可能不是你想要的:

    bindings={{
      data: ["a", "b"].map((el, i) => (
        <div key={i}>
          {el}
        </div>
      ))
    }}
    

    这里是the codesandbox for demo

    【讨论】:

    • 谢谢,这对我帮助很大!您的回答对我有帮助 - 我标记为已接受
    【解决方案2】:

    指定您的数据,因为现在数据未定义并且ma​​p仅适用于数组!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 2022-10-15
      • 2017-10-26
      • 1970-01-01
      • 2022-08-12
      • 1970-01-01
      • 2020-07-29
      相关资源
      最近更新 更多