博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React使用ES6语法重构组件代码
阅读量:6982 次
发布时间:2019-06-27

本文共 2191 字,大约阅读时间需要 7 分钟。

首次使用react,要注意react不同版本库,是ES5还是ES6的写法,如何做到统一。下面对于ES6语法重构组件的代码如下:

(1)原始代码:

<script type="text/babel">

var destination=document.querySelector("#root");
var LightningCounter=React.createClass({
getInitialState:function(){
return {
strickes:0
}
},
timeTricks:function(){
this.setState({
strickes:this.state.strickes+100
});
},
componentDidMount:function(){
setInterval(this.timeTricks,1000)
},
render:function(){
return <h1>{this.state.strickes}</h1>;
}
});
var LightningCounterDisplay=React.createClass({
render:function(){
var distyle={
width:250,
height:250,
textAlign:"center",
backgroundColor:"black",
color:"#CCC",
borderRadius:10,
webkitFilter:"drop-shadow(0px 0px 5px #666)"
};
return <div style={distyle}>
<LightningCounter/>
</div>;
}
});

ReactDOM.render(        <LightningCounterDisplay/>,        destination);</script>

(2)重构后的代码:

<script type="text/babel">

var destination=document.querySelector("#root");

class LightningCounterDisplay extends React.Component{                render(){            var distyle= {                width:250,                height:250,                textAlign:"center",                backgroundColor:"black",                color:"#CCC",                borderRadius:10,                webkitFilter:"drop-shadow(0px 0px 5px #666)"            };            return <div style={distyle}>            <LightningCounter/>            </div>;        }}    class LightningCounter extends React.Component{            constructor(props){                super(props);                this.state={                    numtricks:0                }                this.timeTotalTrick = this.timeTotalTrick.bind(this);                  //最关键的一句是,bind让实例化的组件任何                // 地方都能调用该函数,并且函数内部的this指向实例化的组件            }            timeTotalTrick(){                this.setState({                    numtricks:this.state.numtricks+100                })            }            componentDidMount(){                setInterval(this.timeTotalTrick,1000)            }            render(){                return <div>{this.state.numtricks}</div>;            }    }    ReactDOM.render(<LightningCounterDisplay/>,destination);</script>

转载于:https://blog.51cto.com/13238147/2138824

你可能感兴趣的文章
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
查看>>
onSaveInstanceState和onRestoreInstanceState触发的时机
查看>>
设计模式学习02—工厂模式
查看>>
html5--6-10 CSS选择器7--伪类选择器
查看>>
激光数据匹配(MATLAB Robotics System Toolbox)
查看>>
file_put_contents执行返回false,file_put_contents false(linux服务器httpd)
查看>>
Dependency Walker (depends.exe) Home Page
查看>>
Android---- 如何把calendar.getTimeInMillis()获得的毫秒时间
查看>>
Java学习JVM搞搞Jconsole呗
查看>>
JavaScript学习总结一(String对象的用法)
查看>>
lintcode:背包问题II
查看>>
处理手势冲突和错乱的一点经验
查看>>
Struts2防止表单重复提交
查看>>
[转]Python格式化输出
查看>>
在Activity中响应ListView内部按钮的点击事件
查看>>
CSS - 修改input - placeholder 和 readonly 的样式
查看>>
常用UI布局
查看>>
在多线程情况下 局部变量与全局变量 哪个比较安全呢
查看>>
算法评测
查看>>
40款非常酷的国外创意名片设计欣赏
查看>>