目錄
1.JSX使得在模板插入js变量
Hellow, Pan
I like React very much!
2.ReactDomTest
Hello, world!
3.使用JSX支持JS与HTML混用
4.创建组件
Hello, {this.props.name}
5.使用属性 props
6.PropsType
{this.props.title}
7.使用默认属性 GetDefaultProps
8.获取真实dom
9.通过State改变状态
10.使用表单监听,更好的用户交互
11.使用JSBIn 直接在浏览器运行,调试JSX 很方便
首頁 web前端 html教學 ReactJs基础_html/css_WEB-ITnose

ReactJs基础_html/css_WEB-ITnose

Jun 21, 2016 am 08:58 AM

  • 因项目某些页面需要重构, 使用了ReactJs, 所以做了一些小demo

  • 源码地址,含有wiki

1.JSX使得在模板插入js变量

1

<!DOCTYPE html><html>    <head>        <script src="../build/react.js"></script>        <script src="../build/react-dom.js"></script>        <script src="../build/browser.min.js"></script>    </head>    <body>        <div id="example"></div>        <script type="text/babel">            //JSX 允许直接在模板插入 JavaScript 变量。如果这个变量是一个数组,则会展开这个数组的所有成员            var arr = [                 <h1 id="Hellow-Pan"> Hellow, Pan </h1>,                <h2 id="I-like-React-very-much"> I like React very much! </h2>,            ];            ReactDOM.render(                <div>{arr}</div>,                document.getElementById('example')            );        </script>    </body></html>

登入後複製

2.ReactDomTest

1

<!DOCTYPE html><html>    <head>        <script src="../build/react.js"></script>        <script src="../build/react-dom.js"></script>        <script src="../build/browser.min.js"></script>    </head>    <body>        <div id="example"></div>        <script type="text/babel">            ReactDOM.render(                <h1 id="Hello-world">Hello, world!</h1>,                document.getElementById('example')                );        </script>    </body></html>

登入後複製

3.使用JSX支持JS与HTML混用

1

<!DOCTYPE html><html>    <head>        <script src="../build/react.js"></script>        <script src="../build/react-dom.js"></script>        <script src="../build/browser.min.js"></script>    </head>    <body>        <div id="example"></div>        <script type="text/babel">            var names = ['Shine', 'Pans', 'Panshang'];            //jsx可以让html和js混用, <>是html, {}是js            ReactDOM.render(                <div>                {                    names.map(function (name){                        return <div> Hello, {name}!</div>                    })                }                </div>,                document.getElementById('example')            );        </script>    </body></html>

登入後複製

4.创建组件

1

<!DOCTYPE html><html>    <head>        <script src="../build/react.js"></script>        <script src="../build/react-dom.js"></script>        <script src="../build/browser.min.js"></script>    </head>    <body>        <div id="example"></div>        <script type="text/babel">        //HelloMessage 是一个组件类。模板插入 <HelloMessage /> 时,会自动生成 HelloMessage 的一个实例            var HelloMessage = React.createClass({                render: function(){                    return <h1 id="Hello-this-props-name">Hello, {this.props.name}</h1>;                }            });            ReactDOM.render(                <HelloMessage name = "Pan" />,                document.getElementById('example')            );        </script>    </body></html>

登入後複製

5.使用属性 props

1

<!DOCTYPE html><html>    <head>        <script src="../build/react.js"></script>        <script src="../build/react-dom.js"></script>        <script src="../build/browser.min.js"></script>    </head>    <body>        <div id="example"></div>        <script type="text/babel">        //NoteList 组件有两个 span 子节点,它们都可以通过 this.props.children 读取            var NotesList = React.createClass({              render: function() {                return (                  <ol>                  {                    React.Children.map(this.props.children, function (child) {                      return <li>{child}</li>;                    })                  }                  </ol>                );              }            });            ReactDOM.render(              <NotesList>                <span>hello</span>                <span>Pan! </span>              </NotesList>,              document.body            );        </script>    </body></html>

登入後複製

6.PropsType

1

<!DOCTYPE html><html>    <head>        <script src="../build/react.js"></script>        <script src="../build/react-dom.js"></script>        <script src="../build/browser.min.js"></script>    </head>    <body>        <div id="example"></div>        <script type="text/babel">            var MyTitle = React.createClass({                //要求title的属性的data类型是string,只能是string                propTypes: {                    title: React.PropTypes.string.isRequired,                },                render: function() {                    return <h1 id="this-props-title"> {this.props.title} </h1>;                }            });            //测试部分, 将title属性设置成 int类型, 然后会报错            //将123用引号包起来标示为字符串类型将不在报错            var data = 123;            ReactDOM.render(                <MyTitle title = {data} />,                document.body                );        </script>    </body></html>

登入後複製

7.使用默认属性 GetDefaultProps

1

<!DOCTYPE html><html>    <head>        <script src="../build/react.js"></script>        <script src="../build/react-dom.js"></script>        <script src="../build/browser.min.js"></script>    </head>    <body>        <div id="example"></div>        <script type="text/babel">        //获取默认的属性        //获取的是title的值            var MyTitle = React.createClass({              getDefaultProps : function () {                return {                  title : 'shinepans'                };              },              render: function() {                 return <h1 id="this-props-title"> {this.props.title} </h1>;               }            });            ReactDOM.render(              <MyTitle />,              document.body            );        </script>    </body></html>

登入後複製

8.获取真实dom

1

<!DOCTYPE html><html>    <head>        <script src="../build/react.js"></script>        <script src="../build/react-dom.js"></script>        <script src="../build/browser.min.js"></script>    </head>    <body>        <div id="example"></div>        <script type="text/babel">            var MyComponent = React.createClass({                handleClick: function() {                //监听点击事件, 聚焦输入框                this.refs.myTextInput.focus();                },                render: function() {                    return (                    <div>                        <input type="text" ref="myTextInput" />                        <input type="button" value="Focus the text input" onClick={this.handleClick} />                    </div>                        );                    }                });            ReactDOM.render(                <MyComponent />,                document.getElementById('example')            );        </script>    </body></html>

登入後複製

9.通过State改变状态

1

<!DOCTYPE html><html>    <head>        <meta charset="utf-8")> </meta>        <script src="../build/react.js"></script>        <script src="../build/react-dom.js"></script>        <script src="../build/browser.min.js"></script>    </head>    <body>        <div id="example"></div>        <script type="text/babel">            var LikeButton = React.createClass({              getInitialState: function() {                return {liked: false};              },              handleClick: function(event) {                this.setState({liked: !this.state.liked});              },              //转换状态, 喜欢或不喜欢              render: function() {                var text = this.state.liked ? '喜欢了' : '还没喜欢';                return (                  <p onClick={this.handleClick}>                    你{text}这个.点击文本改变你的状态.                  </p>                );              }            });            ReactDOM.render(              <LikeButton />,              document.getElementById('example')            );        </script>    </body></html>

登入後複製

10.使用表单监听,更好的用户交互

1

<!DOCTYPE html><html>    <head>        <meta charset="utf-8")> </meta>        <script src="../build/react.js"></script>        <script src="../build/react-dom.js"></script>        <script src="../build/browser.min.js"></script>    </head>    <body>        <div id="example"></div>        <script type="text/babel">        //监听textarea的变化, 变化了就更新p标签里的内容        //下面初始化了 输入框和p的初始值            var Input = React.createClass({              getInitialState: function() {                return {value: '请在文本框输入文本'};              },              handleChange: function(event) {                this.setState({value: event.target.value});              },              render: function () {                var value = this.state.value;                return (                  <div>                    <textarea rows="10" cols="30" value={value} onChange={this.handleChange} />                    <p>{value}</p>                  </div>                );              }            });            ReactDOM.render(<Input/>, document.body);        </script>    </body></html>

登入後複製

11.使用JSBIn 直接在浏览器运行,调试JSX 很方便

  • JSBib网址

令文字渐变效果, 使用了props, 计时器等, 源码参考开始时给出的源代码地址

by: 潘尚

time: 2016.1.30

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗? 公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗? Mar 04, 2025 pm 12:32 PM

公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?

如何使用HTML5表單驗證屬性來驗證用戶輸入? 如何使用HTML5表單驗證屬性來驗證用戶輸入? Mar 17, 2025 pm 12:27 PM

如何使用HTML5表單驗證屬性來驗證用戶輸入?

&lt; iframe&gt;的目的是什麼。 標籤?使用時的安全考慮是什麼? &lt; iframe&gt;的目的是什麼。 標籤?使用時的安全考慮是什麼? Mar 20, 2025 pm 06:05 PM

&lt; iframe&gt;的目的是什麼。 標籤?使用時的安全考慮是什麼?

如何高效地在網頁中為PNG圖片添加描邊效果? 如何高效地在網頁中為PNG圖片添加描邊效果? Mar 04, 2025 pm 02:39 PM

如何高效地在網頁中為PNG圖片添加描邊效果?

&lt; meter&gt;的目的是什麼。 元素? &lt; meter&gt;的目的是什麼。 元素? Mar 21, 2025 pm 12:35 PM

&lt; meter&gt;的目的是什麼。 元素?

&lt; datalist&gt;的目的是什麼。 元素? &lt; datalist&gt;的目的是什麼。 元素? Mar 21, 2025 pm 12:33 PM

&lt; datalist&gt;的目的是什麼。 元素?

&gt; gt;的目的是什麼 元素? &gt; gt;的目的是什麼 元素? Mar 21, 2025 pm 12:34 PM

&gt; gt;的目的是什麼 元素?

視口元標籤是什麼?為什麼對響應式設計很重要? 視口元標籤是什麼?為什麼對響應式設計很重要? Mar 20, 2025 pm 05:56 PM

視口元標籤是什麼?為什麼對響應式設計很重要?

See all articles