react組件基本用法示例小結(jié)
更新時間:2020年04月27日 11:57:44 作者:人生如初見_張默
這篇文章主要介紹了react組件基本用法,結(jié)合實例形式分析了react組件傳值、生命周期、受控組件和非受控組件等相關(guān)操作技巧,需要的朋友可以參考下
本文實例講述了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擴展庫-->
<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}>點擊</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擴展庫-->
<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擴展庫-->
<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擴展庫-->
<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會先執(zhí)行,但不一定先執(zhí)行完畢
console.log('之前');
// this.get();
}
componentDidMount() {
//進行ajax操作,獲取后臺數(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>
希望本文所述對大家react程序設(shè)計有所幫助。
相關(guān)文章
React如何實現(xiàn)像Vue一樣將css和js寫在同一文件
這篇文章主要介紹了React如何實現(xiàn)像Vue一樣將css和js寫在同一文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
React?Hooks--useEffect代替常用生命周期函數(shù)方式
這篇文章主要介紹了React?Hooks--useEffect代替常用生命周期函數(shù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09

