React 学习一
说实话,我是被innerHTML等方式搞的受不了了才开始研究模板引擎的。。。。。。。。 1.安装React官网,我自己的开发环境是windos,只说一说地址就好了。 2.helloWorld好吧,这是惯例QAQ <!DOCTYPE html> <html> <head> <script src="react/build/react.js"></script> <script src="react/build/JSXTransformer.js"></script> </head> <body> <div id="example"></div> <script type="text/jsx"> var name = "World"; React.render( <p>hello {name}</p>,document.getElementById("example") ); </script> </body> </html> 以上的代码就是一个最简单的React应用了,其中react.js是React的基本文件,JSXTransformer.js是一个JSX语法翻译器(我是这么叫的。。。)或者叫做解析器(JSX是一个javascript语法糖,有兴趣的自行百度)。这两个文件必须先行引入,因为必须将我们系的JSX翻译成源生的JavaScript。特别提示:在讲JSX翻译成JS的时候特别的费时,建议在上线之前直接翻译。 <!DOCTYPE html> <html> <head> <script src="react/build/react.js"></script> <script src="react/build/JSXTransformer.js"></script> </head> <body> <div id="example"></div> <script type="text/jsx"> var p = React.createElement('p',null,'hello World'); React.render(p,document.getElementById('example')); </script> </body> </html> 个人比较推荐JSX的写法,因为看起来比较爽,写起来简单而且并不需要那么多的回调。。。。 组件React 允许将代码封装成组件(component),然后像插入普通 HTML 标签一样,在网页中插入这个组件。React.createClass 方法就用于生成一个组件类,如下 JS代码 /** * reactJS 组件类 */ var H = React.createClass({ render: function () { return <p className="className">{this.props.name} hello world</p>; } }); React.render( <H name="ReactJS" />,document.getElementById("example") ); HTML代码: <!DOCTYPE html> <html> <head> <script src="react/build/react.js"></script> <script src="react/build/JSXTransformer.js"></script> </head> <body> <div id="example"></div> <script type="text/jsx" src="test.js"> </script> </body> </html> 在写组件的过程中,我发现组件的命名首字母必须大写,我不知道这是什么原因,求哪位大神指导一些,不胜感激。。 /** * reactJS 组件类 */ var H = React.createClass({ click: function () { alert("click") },over: function () { alert("over") },render: function () { var c = "click",o = "over"; return ( <div> <p onClick={this.click}>{c}</p> <p onMouSEOver={this.over}>{o}</p> </div> ); } }); React.render( <H name="ReactJS" />,document.getElementById("example") ); 在注册完成之后,查看DOM节点,发现依旧使用的是addEventListener方式。 var divStyle = { color: 'white',backgroundColor: 'red',WebkitTransition: 'all',// note the capital 'W' here msTransition: 'all' // 'ms' is the only lowercase vendor prefix }; React.render( <div style={divStyle}>Hello World!</div>,document.getElementById("example")); 关于if else,首先我以为它可以这样。。。 /** * reactJS 组件类 */ var H = React.createClass({ render: function () { var d = false; return ( <div> if (d) { <p>123</p> } else { <p>321</p> } </div> ); } }); React.render( <H name="ReactJS" />,document.getElementById("example") ); 然而这一切并没有卵用! var loginButton; if (loggedIn) { loginButton = <LogoutButton />; } else { loginButton = <LoginButton />; } return ( <nav> <Home /> {loginButton} </nav> ) 我自己试了试 /** * reactJS 组件类 */ var H = React.createClass({ render: function () { var d = false; var val; if (d) { val = <div><p>123</p></div>; } else { val = <div><p>321</p></div>; } return val; } }); React.render( <H name="ReactJS" />,document.getElementById("example") ); 这个还是有卵用的。 // This JSX: <div id={if (condition) { 'msg' }}>Hello World!</div> // Is transformed to this JS: React.createElement("div",{id: if (condition) { 'msg' }},"Hello World!"); 在这里要么使用3元表达式,要么老老实实的拆成两段写。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |