react組件基本用法示例小結(jié)
更新時(shí)間:2020年04月27日 11:57:44 作者:人生如初見_張默
這篇文章主要介紹了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核心庫-->
<script src="../js/react-dom.production.min.js"></script><!--操作DOM的react擴(kuò)展庫-->
<script src="../js/babel.min.js"></script><!--解析JSX語法-->
<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);//父組件訪問子組件用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核心庫-->
<script src="../js/react-dom.production.min.js"></script><!--操作DOM的react擴(kuò)展庫-->
<script src="../js/babel.min.js"></script><!--解析JSX語法-->
<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:['吃飯','睡覺','打游戲','游泳']
};
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核心庫-->
<script src="../js/react-dom.production.min.js"></script><!--操作DOM的react擴(kuò)展庫-->
<script src="../js/babel.min.js"></script><!--解析JSX語法-->
<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核心庫-->
<script src="../js/react-dom.production.min.js"></script><!--操作DOM的react擴(kuò)展庫-->
<script src="../js/babel.min.js"></script><!--解析JSX語法-->
<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;
//如果沒有
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)todolist的增刪改查詳解
這篇文章主要為大家介紹了react實(shí)現(xiàn)todolist的增刪改查,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-12-12
更強(qiáng)大的React 狀態(tài)管理庫Zustand使用詳解
這篇文章主要為大家介紹了更強(qiáng)大的React 狀態(tài)管理庫Zustand使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
詳解超簡(jiǎn)單的react服務(wù)器渲染(ssr)入坑指南
這篇文章主要介紹了詳解超簡(jiǎn)單的react服務(wù)器渲染(ssr)入坑指南,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02
React-router4路由監(jiān)聽的實(shí)現(xiàn)
這篇文章主要介紹了React-router4路由監(jiān)聽的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08
使用React Native創(chuàng)建以太坊錢包實(shí)現(xiàn)轉(zhuǎn)賬等功能
這篇文章主要介紹了使用React Native創(chuàng)建以太坊錢包,實(shí)現(xiàn)轉(zhuǎn)賬等功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
React利用props的children實(shí)現(xiàn)插槽功能
React中并沒有vue中的?slot?插槽概念?不過?可以通過props.children?實(shí)現(xiàn)類似功能,本文為大家整理了實(shí)現(xiàn)的具體方,需要的可以參考一下2023-07-07

