您的位置:首页 > Web前端 > React

react组件基本用法示例小结

2020-04-28 12:04 64 查看

本文实例讲述了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);//重新设置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会先执行,但不一定先执行完毕
console.log('之前');
// this.get();
}

componentDidMount() {
//进行ajax操作,获取后台数据
console.log('之后');
}

shouldComponentUpdate(nextProps, nextState) {
const {msg} = this.state;

//如果没有
if ({msg} !== nextState) {
return true;
}
console.log('更新');
return false;
}

componentWillUpdate() {
console.log('更新之前');
}

componentDidUpdate() {
console.log('更新之后');
//再次获取数据
}

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程序设计有所帮助。

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  react 组件