javascript - 如何将模板从 Handlebar 迁移到 React 的 JSX

标签 javascript reactjs handlebars.js

我需要将我的代码从主干 View 迁移到 react View 。

我在主干 View 中使用 Handlebars 模板,我需要将其放入 React 组件的 render 方法中。

有人可以建议如何将这两个实用方法移至 JSX

  1. <div>
      {{#with paymentDescription}}
        <div class="test">
          <p>some text</p>
        </div>
      {{/with}}
    </div>
    
  2. 除非

    <div class="name">
      {{ abc.def.firstName }} {{ abc.def.lastName }}
      {{#unless quote.def}}
        &nbsp;
      {{/unless}}
    </div>
    

最佳答案

如果表达式返回假值,unless block 内的所有内容都将被渲染。

将其替换为以下 jsx 代码:

let unless_block = "";
if (!props.quote.def) { unless_block = "&nbsp;" }
return (
    <div className="name">
    { props.abc.def.firstName } { props.abc.def.lastName }
    {unless_block}
    </div>
);

通常,Handlebars 模板是根据传递到编译方法中的上下文进行评估的。 with 辅助方法用于转移模板部分的上下文。

借用您的示例,如果您的 props 包含值 abc.def.firstName 和 abc.def.lastName,您可以在 {{with abc.def}} block 中使用firstName和lastName。

您的 with block 示例中没有使用任何变量。这就是为什么我对您的示例进行了一些修改,以展示如何在 jsx 表达式中使用缩写的 paymentDescription。假设 paymentDescription 最初深埋在 props.abd.def 内部。然后你可以编写以下jsx代码:

let paymentDescription = props.abc.def.paymentDescription; //shift the context

return (
    <div>
    <div className="test">
    {paymentDescription}
    </div>
    </div>
);

关于javascript - 如何将模板从 Handlebar 迁移到 React 的 JSX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44992423/

相关文章:

javascript - Handlebars 数组长度 -1

javascript - Meteor点击事件值未定义

Rust & Rocket.rs - 构建布局系统

javascript - 如何在传单 map 上放置按钮

javascript - 我无法安装特定的 Node 模块 [ejs]

reactjs - Redux actions/reducers 与直接设置状态

javascript - 有没有办法使用react-leaflet添加MultiPolyline组件?

javascript - 使用 Typescript knockout 复选框

javascript - 我无法让全局导航采用我的风格

reactjs - 如何根据 AntD 中的菜单项单击更改内容(React UI 库)