程序员软件技巧

React最快速上手教程

2020-08-16  本文已影响0人  zhyuzh3d

不使用webpack或其他任何编译打包工具,但使用React的JSX混合语法,直接在浏览器中运行React的元件component,十分钟最快速上手。

image

为什么用React?

综上所述,所谓的现代化网页开发的变革,更像是朝着面向对象编程模式的进化,对象也好,模块也好,其实是一种应对复杂情况的功能组织管理模式,要应对更庞大更复杂的网站项目,就必须使用现代化的网页开发模式。

目前行业最主流的现代化网站开发框架就是VueJS、ReactJS和AngularJS。虽然VueJS最简单好用,但我还是选择了React,因为它更松散自由,可玩性更强,还有它那太好用的JSX语法!

基础模板

先看一下index.html的代码:

<!DOCTYPE html>
<head>
    <script src="https://unpkg.com/react@16/umd/react.production.min.js" crossorigin></script>
    <script src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js" crossorigin></script>
</head>

<body>
    <div id="app"></div>
    <script src="lib/react/babel.min.js"></script>
    <script type="text/babel" src="App.jsx"></script>
    <script type="text/babel" src="./js/components/MyComponent.jsx"></script>
    <script type="text/babel">
        ReactDOM.render(
            React.createElement(App),
            document.querySelector('#app')
        );
    </script>
</body>
</html>

这里有一些说明:

入口元件

我们再来看App.jsx的代码:

'use strict';
let _App = (k) => (
    <div>
        <h2>{k.state.data}</h2>
    </div>
)
class App extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            data: 'pData',
        };
    }
    render() {
        return _App(this)
    }
}

这个是最简化的代码,这里有一些说明:

嵌套元件

我们把上面的入口元件扩展一下,让它直接使用我们在index.html中引入的MyComponent元件,改造后添加了一些增强功能,App.jsx代码如下:

'use strict';
let _App = (k) => (
    <div>
        <h2>{k.state.author}</h2>
        <button onClick={k.clickHandler}>BUTTON</button>
        <MyComponent pdata={k.state.tag} pfunc={k.clickHandler} app={k}></MyComponent>
    </div>
)
class App extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            data: 'pData',
            tag: 'pTag'
        };
        this.clickHandler=()=>{
            this.setState({'tag':'Hello!'})
            alert('Parent btn click!')
        }
    }
    render() {
        return _App(this)
    }
}

这里是一些说明:

子元素

下面是MyComponent.jsx的代码,并不是最简的,仅供参考:

'use strict';
let _Kcodecell = (k) => (
    <div>
        <h4>{k.props.kata}</h4>
        <button onClick={k.props.pfunc}>{k.props.pdata}</button>
        <button onClick={k.props.app.clickHandler}>{k.props.pdata}</button>
        <p>{k.state.name}</p>
    </div>
)

class Kcodecell extends React.Component {
    constructor(props) {
        super(props);
        this.state = { name: 'Kcodecell' };
    }
    componentDidMount() { }
    componentWillUnmount() { }
    render() {
        return _Kcodecell(this)
    }
}

这个代码和App.jsx结构完全相同,因为它们本来就都是component,完全没有区别。下面是一些提示:

回顾总结

上面代码实际上已经讲了React元件的管理和数据传递。

最后,补充两点:


上一篇 下一篇

猜你喜欢

热点阅读