React从入门到精通系列之(2)JSX的介绍
二、JSX的介绍首先,请考虑下面的变量声明: const element = <h1>hello world</h1>; 这个有趣的标签语法,因为它既不是 它被称为JSX,它是JavaScript的语法扩展。 我们建议使用它和React一起使用,以便描述UI应该是什么样子的。JSX或许看上去像是一个模板语言,但是它具有JavaScript的全部能力。 JSX用来生成React元素。 我们将在下一节中探讨将它们渲染到DOM。 下面,你可以找到JSX的基础知识。 JSX中的嵌入表达式你可以通过将表达式包含在一个大括号里,以便用来在JSX中嵌入任何JavaScript表达式。 function formatName(user){ return user.firstName + user.lastName; } const user = { firstName: 'yatao',lastName: 'zhang' }; const Element = ( <h1> hello,{formatName(user)} </h1> ); ReactDOM.render( Element,document.getElementById('root') ); 我们将JSX拆分为多行以提高可读性。 虽然它不是强制性的要求,但当执行此操作时,我们还建议将其括在括号中,以避免自动分号插入而引起不必要的bug。 JSX也是一个表达式编译后,JSX表达式会成为常规JavaScript对象。 function getGreeting(user) { if (user) { return <h1>hello,{formatName(user)}!</h1>; } return <h1>hello,stranger.</h1>; } 使用JSX指定属性您可以使用引号将字符串文字指定为属性: const element = <div tabindex="0"></div>; 您还可以使用大括号在属性中嵌入JavaScript表达式: const element = <img src={user.avatarUrl}></img>; 使用JSX指定子元素如果标记为空,您可以使用 const element = <img src={user.avatarUrl} />; JSX标签也可以包含子元素: const element = ( <div> <h1>hello!</h1> <h2>Good to see you here.<h2> </div> );
JSX防止注入攻击在JSX中嵌入用户输入是安全的: const title = response.potentiallyMaliciousInput; // 要接收到的可能含有危险内容的字符串放入大括号中,这是比较安全的做法 const element = <h1>{title}</h1>; 默认情况下,React DOM在渲染它们之前 JSX表示对象Babel将JSX编译为 const element = ( <h1 className="greeting"> hello world </h1> ); const element = React.createElement( 'h1',{className: 'greeting'},'hello world' );
// 提示:这是一个简单对象结构 const element = { type: 'h1',props: { className: 'greeting',children: 'hello,world' } }; 这些对象称为“React元素”。 你可以把它们想象成你想在屏幕上看到的样子。 React读取这些对象,并使用它们构造成为DOM元素同时一直保持其为最新的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |