react組件基本用法示例小結(jié)
更新時(shí)間:2020年04月27日 11:57:44 作者:人生如初見(jiàn)_張默
這篇文章主要介紹了react組件基本用法,結(jié)合實(shí)例形式分析了react組件傳值、生命周期、受控組件和非受控組件等相關(guān)操作技巧,需要的朋友可以參考下
本文實(shí)例講述了react組件基本用法。分享給大家供大家參考,具體如下:
組件間傳值:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body>
<div id="app">
</div>
<script src="../js/react.production.min.js"></script><!--react核心庫(kù)-->
<script src="../js/react-dom.production.min.js"></script><!--操作DOM的react擴(kuò)展庫(kù)-->
<script src="../js/babel.min.js"></script><!--解析JSX語(yǔ)法-->
<script type="text/babel">
class Com extends React.Component {
click = ()=>{
// console.log(this.input);
// console.log(this.p.innerText);
console.log(this.refs.my.value);//父組件訪問(wèn)子組件用refs
};
render() {
return (
<div>
<input type="text" ref={(input)=>{this.input=input}}/>
<p ref={(p)=>{this.p=p}}>我是段落</p>
<input type="text" ref="my"/>
<button onClick={this.click}>點(diǎn)擊</button>
</div>
);
}
}
ReactDOM.render(<Com/>,document.getElementById('app'));
</script>
</body>
</html>
列表:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body>
<div id="app"></div>
<script src="../js/react.production.min.js"></script><!--react核心庫(kù)-->
<script src="../js/react-dom.production.min.js"></script><!--操作DOM的react擴(kuò)展庫(kù)-->
<script src="../js/babel.min.js"></script><!--解析JSX語(yǔ)法-->
<script type="text/babel">
class Add extends React.Component {
click = ()=>{
this.props.allAdd(this.input.value);
};
render() {
const {length} = this.props;
return (
<div>
<input type="text" ref={(input)=>{this.input=input}}/>
<button onClick={this.click}>add{length}</button>
</div>
)
}
}
class List extends React.Component {
render() {
const {list} = this.props;
return (
<div>
<ul>
{
list.map((v,i)=>{
return <li key={i}>{v}</li>
})
}
</ul>
</div>
)
}
}
class App extends React.Component {
state = {
list:['吃飯','睡覺(jué)','打游戲','游泳']
};
add = (value)=>{
const {list} = this.state;//獲取原先的list
list.unshift(value);//將添加的值傳入list
this.setState(list);//重新設(shè)置list
};
render() {
const {list} = this.state;//獲取list
return (
<div>
<Add allAdd={this.add} length={list.length}/>
<List list={list} />
</div>
)
}
}
ReactDOM.render(<App />,document.getElementById('app'));
</script>
</body>
</html>
受控組件和非受控組件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body>
<div id="app"></div>
<script src="../js/react.production.min.js"></script><!--react核心庫(kù)-->
<script src="../js/react-dom.production.min.js"></script><!--操作DOM的react擴(kuò)展庫(kù)-->
<script src="../js/babel.min.js"></script><!--解析JSX語(yǔ)法-->
<script type="text/babel">
class Com extends React.Component {
state = {
age:''
};
//非受控組件 不受state控制
click = () => {
console.log(this.input.value);
};
change = (event)=>{
console.log(event.target.value);
this.setState({
age: event.target.value
})
};
render() {
const {age} = this.props;
return (
<div>
姓名:<input type="text" ref={(input)=>{this.input=input}}/>
<button onClick={this.click}>獲取姓名</button>
年齡:<input type="text" value={age} onChange={this.change}/>
</div>
);
};
}
ReactDOM.render(<Com />,document.getElementById('app'));
</script>
</body>
</html>
組件生命周期:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
</head>
<body>
<div id="app"></div>
<script src="../js/react.production.min.js"></script><!--react核心庫(kù)-->
<script src="../js/react-dom.production.min.js"></script><!--操作DOM的react擴(kuò)展庫(kù)-->
<script src="../js/babel.min.js"></script><!--解析JSX語(yǔ)法-->
<script type="text/babel">
class Com extends React.Component {
state = {
msg:123
};
sing() {
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve('唱一首歌');
},1000);
})
};
async get() {
await this.sing().then((res)=>{
console.log(res);
});
};
componentWillMount() {
//will會(huì)先執(zhí)行,但不一定先執(zhí)行完畢
console.log('之前');
// this.get();
}
componentDidMount() {
//進(jìn)行ajax操作,獲取后臺(tái)數(shù)據(jù)
console.log('之后');
}
shouldComponentUpdate(nextProps, nextState) {
const {msg} = this.state;
//如果沒(méi)有
if ({msg} !== nextState) {
return true;
}
console.log('更新');
return false;
}
componentWillUpdate() {
console.log('更新之前');
}
componentDidUpdate() {
console.log('更新之后');
//再次獲取數(shù)據(jù)
}
click = ()=>{
this.setState({
msg: 234
})
};
render() {
console.log('render');
const {msg} = this.state;
return(
<div>
<h1>{msg}</h1>
<button onClick={this.click}>更新</button>
</div>
)
}
}
ReactDOM.render(<Com />,document.getElementById('app'));
</script>
</body>
</html>
希望本文所述對(duì)大家react程序設(shè)計(jì)有所幫助。
相關(guān)文章
React如何實(shí)現(xiàn)像Vue一樣將css和js寫在同一文件
這篇文章主要介紹了React如何實(shí)現(xiàn)像Vue一樣將css和js寫在同一文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
React?Suspense解決競(jìng)態(tài)條件詳解
這篇文章主要為大家介紹了React?Suspense解決競(jìng)態(tài)條件詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
聊聊jenkins部署vue/react項(xiàng)目的問(wèn)題
本文給大家介紹了jenkins部署vue/react項(xiàng)目的問(wèn)題,文末給大家提到了centOS安裝jenkins的腳本,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2022-02-02
React?Hooks--useEffect代替常用生命周期函數(shù)方式
這篇文章主要介紹了React?Hooks--useEffect代替常用生命周期函數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
react跳轉(zhuǎn)后路由變了頁(yè)面沒(méi)刷新的解決
這篇文章主要介紹了react跳轉(zhuǎn)后路由變了頁(yè)面沒(méi)刷新的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03

