|
導讀網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立... 網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立在超文本基礎之上的。超級文本標記語言之所以稱為超文本標記語言,是因為文本中包含了所謂“超級鏈接”點。 本篇文章給大家帶來的內容是關于React中props和state屬性的用法詳解(代碼示例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。本篇文章主要介紹了React props和state屬性的具體使用方法,具有一定的參考價值,對此有需要的朋友可以參考學習下。如有不足之處,歡迎批評指正。 props 不知道大家還記不記得xml標簽中的屬性,就像這樣: <class id="1"> <student id="1">John Kindem</student> <student id="2">Alick Ice</student> </class> 這樣一個xml文件表達的意思是1班有兩個學生,學號為1的學生名字為John Kindem,學號為2的學生名字為Alick Ice,其中id就是屬性,你可以把它看做一個常量,它是只讀的。 // 假設我們已經自定義了一個叫Hello的組件
ReactDom.render(
<Hello firstName={'John'} lastName={'Kindem'}/>,
document.getElementById('root')
);在調用React組件的時候,我們可以像上面一樣向組件傳遞一些常量,以便組件在內部調用。而調用的方法,就像下面這樣: class Hello extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<p>
<h1>Hello, {this.props.firstName + ' ' + this.props.lastName}</h1>
</p>
);//歡迎加入前端全棧開發交流圈一起學習交流:864305860
}//面向1-3年前端人員
}//幫助突破技術瓶頸,提升思維能力
ReactDom.render(
<Hello firstName={'John'} lastName={'Kindem'}/>,
document.getElementById('root')
);在組件內部獲取傳遞過來的props,只需要使用this.props對象即可,但是在使用之前,記得復寫組件的構造函數,并且接受props的值以調用父類構造。 class Hello extends React.Component {
constructor(props) {
super(props);
}
static defaultProps = {
firstName: 'John',
lastName: 'Kindem'
};
render() {
return (
<div>
<h1>Hello, {this.props.firstName + ' ' + this.props.lastName}</h1>
</div>
);//歡迎加入前端全棧開發交流圈一起吹水聊天學習交流:864305860
}//面向1-3年前端人員
}//幫助突破技術瓶頸,提升思維能力
ReactDom.render(
<Hello/>,
document.getElementById('root')
);只需在ES6類中聲明一個static的props默認值即可,運行效果和上面一樣。 state、組件生命周期 你可能回想,如果我想在React組件中添加動態效果怎么辦?這一問題需要使用React組件的state來解決,state即狀態的意思,在React中,所有會變化的控制變量都應該放入state,每當state中的內容變化時,頁面的相應組件將會被重新渲染,另外,state完全是組件內部的東西,外部無法向內部傳遞state,也無法直接改變state的值。 import React from 'react';
import ReactDom from 'react-dom';
class Time extends React.Component {
constructor(props) {
super(props);
// 初始化state
this.state = {
hour: 0,
minute: 0,
second: 0
}
}
componentDidMount() {
this.interval = setInterval(() => this.tick(), 1000);
}
componentWillUnmount() {
clearInterval(this.interval);
}
tick() {
// 計算新時間
let newSecond, newMinute, newHour;
let carryMinute = 0, carryHour = 0;
newSecond = this.state.second + 1;
if (newSecond > 59) {
carryMinute = 1;
newSecond -= 60;
}
newMinute = this.state.minute + carryMinute;
if (newMinute > 59) {
carryHour = 1;
newMinute -= 60;
}
newHour = this.state.hour + carryHour;
if (newHour > 59) newHour -= 60;
// 設置新狀態
this.setState({
hour: newHour,
minute: newMinute,
second: newSecond
});
}
render() {
return (
<div>
<h1>current time: {this.state.hour + ':' + this.state.minute + ':' + this.state.second}</h1>
</div>
);
}
}
ReactDom.render(
<Time/>,
document.getElementById('root')
);這樣就完成了一個計數器,數值一秒鐘變化一次,來講解一下代碼:首先,state的初始化是在構造函數中,像這樣: constructor(props) {
super(props);
// 在這初始化state
this.state = {
...
}
}而改變state是使用React組件基類中的一個自帶函數: this.setState({
...
});使用這個函數之前一定要注意this的作用域,箭頭函數中的this指向外部this,而普通函數中的this指向函數本身。 componentDidMount() {
// React組件被加載到dom中的時候被調用
...
}
componentWillUnmount() {
// React組件從dom中卸載的時候被調用
...
}所以這樣一下上面的計時器代碼應該就不是什么難事了,在React組件被加載到dom中的時候設置一個計時器,每秒鐘更新一次state,state更新的同時頁面中的組件將會被重新渲染,而當組件被卸載的時候,則需要清除定時器,就那么簡單。 以上就是React中props和state屬性的用法詳解(代碼示例)的詳細內容,更多請關注php中文網其它相關文章! 網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。 |
溫馨提示:喜歡本站的話,請收藏一下本站!