JSX
2016-03-24 15:46 owsir 阅读(250) 评论(0) 编辑 收藏 举报JSX允许我们在Javascript中写HTML,而不是用HTML包含Javascript。
(1)JSX每一个组件都有一个 render 方法
这个方法产生一个”ViewModel(视图模型)” – 在返回HTML到组件之前,你可以将这个模型(ViewModel)的信息放入视图中,意味着你的HTML会根据这个模型动态改变(例如一个动态列表)。
(2)gulp和grunt为你的预处理任务提供了一个JSX解释器
var ExampleComponent = React.createClass({ render: function () { return ( <div className="navigation"> Hello World! </div> ); } });
当你在代码上运行JSX解释器,它将被转换成这样
var ExampleComponent = React.createClass({ render: function () { return ( React.createElement('div', {className: 'navigation'}, 'Hello World!') ); } });
JSX解释了你使用 React.createElement 生成的所有DOM节点,生成了节点类型、参数和内容。你可以不用JSX,但这意味着你必须要手动写 React.createElement 以外的所有DOM节点。无数例子告诉我要使用JSX。
为什么在DOM上使用 className 来代替 class。这是因为 class 是Javascript的保留词。当JSX解释你的代码时就会改变这节点上的所有属性到一个对象上,但你不能把对象当作属性!
将变量用在属性上
如果你想动态改变组件的样式类(或者任何其他的属性值),你可以使用变量. 不过你不能只是传进去一个变量名称,你还要将其用一对大括弧包起来, 这样JSX就能知道这是一个外部的变量了.
var ExampleComponent = React.createClass({
render: function () {
var navigationClass = 'navigation';
return (
<div className={ navigationClass }>
Hello World!
</div>
);
}
});
初始的渲染器
当你最开始要渲染一个React组件时,你需要告诉React是要渲染什么组件,还要制定一个现有的DOM节点以表示在哪儿渲染这个组件. 为此你会要使用React.render函数.
var ExampleComponent = React.createClass({ render: function () { return ( <div className="navigation"> Hello World! </div> ); } }); React.render(<ExampleContent />, document.body);
他将会在body节点上渲染组件——简单吧! 从此你就可以像通常那样调用其他的组件了, 或者如果你希望的话,可以使用render函数许多次
一个组件的基础
组件可以拥有其自己的"状态"。这使我们能够重复多次使用相同的组件但却让它们看起来完全不同,因为每个组件实例的状态是唯一的。
当你通过传递属性到一个组件时这些被称为属性。不要只局限于 HTML 属性,你可以传递任何你想传递的东西,并在组件内通过 this.props 访问它。这样使得我们能够重复使用相同的组件但传递一组不同的属性,比如组件的"配置"。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述