vue设置标签自定义属性_如何扩展jsx的标签自定义属性,提供类似vue指令v-if , v-for的功能?...

一些开发者,特别是有使用过「模板技术」的开发者(例如 Handlebars),刚开始尝试使用 React 编写应用时,可能会惊讶的发现,JSX 竟然没有内建支持类似其它模板引擎似的任何结构控制语句或指令。但这就是 JSX,它就是这么设计的,JSX 不是传统的模板,也不需要某个模板引擎去解析。大体上,可以将 JSX 看成普通 JavaScript 表达式的语法糖,JSX 其实比模板指令有「更强大灵活的表达能力」,但「声明式的模板」相较于「指令式的 JS」不少场景也确实会简单些。

如 @黑猫 的回答,在 React 中也是可以的,比如 JSX-Control-Statements,它为 JSX 增加了基本的结构控制语句,比如条件和循环控制语句。最终在编译阶段,通过 Babel 插件将「组件风格」的控制语句最终转换为普通 JS 代码,例如:

Hello World!

将会转换为

condition() ? 'Hello World!' : null

详细说明和用法,可参考这篇文章侯锋:通过 JSX Control Statements 编写 JSX​zhuanlan.zhihu.com7ef23f84d4386310fafd56067339b9ff.png

再进一步,在 React 中也是可以进行「双向绑定」的,比如结合 Mota,Mota 是一个主张「面向对象」的、支持「双向绑定」的 React 应用辅助库,基于 mota 你可以用纯 JavaScript 为应用编写完全面向对象的「业务模型」,并轻易的将「业务模型」关联到 React 应用中,例如:

有这样一个模型类

export default class User {

firstName = 'Jack';

lastName = 'Hou';

get fullName(){

reutrn `${this.firstName}${this.lastName}`;

}

}

那么,就可以这样进行绑定了

import { model,binding } from 'mota';

import React from 'react';

import ReactDOM from 'react-dom';

import User from './models/user';

@model(User)

@binding

class App extends React.Component {

render(){

const { fullName } = this.model;

return

{fullName}

;

}

}

ReactDOM.render(, mountNode);

详细说明和用法,可参考这篇文章侯锋:在 React 工程中利用 Mota 编写面向对象的业务模型​zhuanlan.zhihu.com7bafee33155d08d5bb7184a8cab8fd8a.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值