import React,{Fragment} from 'react'
function Comp(){
return (
content
)
}
export default Comp
{/*接下来一般在App.js中引入即可*/}
import React,{Component,Fragment} from 'react'
{/*这里要解析jsx就需要引入React,从react.Component中解构出Component*/}
class Comp extends Component{
render(){
return (
{/*唯一根元素,用Fragment代替一般的div可以在结构上减少一层*/}
content
)
}
}
export default Comp
{/*接下来一般在App.js中引入即可*/}
import React,{Component,Fragment} from 'react'
class Styleone extends Component{
render(){
return (
这里是第一种样式组件
)
}
}
export default Styleone
import React,{Component,Fragment} from 'react'
import './style.css'
class Styletwo extends Component{
render(){
return (
这里是第二种样式组件
)
}
}
export default Styletwo
安装cnpm i classname -S
{/*这里也要引入对应的样式css文件,样式文件中有许多类名,通过classname函数来选择谁被添加*/}
import React,{Component,Fragment} from 'react'
import classname from 'classname'
import './style.css'
class Stylethree extends Component{
render(){
return (
这里是第三种样式组件
)
}
}
export default Stylethree
安装:cnpm i styled-components -D
import React,{Component,Fragment} from 'react'
import styled from 'styled-components'
{/*styled后面加的是什么标签,最后这个Container组件就会被解析为什么,且具有模板字符串里面的样式*/}
const Container = styled.div`
width:100px;
height:100px;
background-color:lime;
`
class Stylefour extends Component{
render(){
return (
这里是第四种样式组件
{/*这个组件会被解析为一个div,且具有上面写的样式*/}
)
}
}
export default Stylefour
感觉比较强大的是,这种样式组件还可以嵌套,并写入内容、标签等,不用担心像一般的组件一样,即组合组件,里面的不在父组件里面写{this.props.children}会被覆盖的问题
import React,{Component,Fragment} from 'react'
import styled from 'styled-components'
{/*styled后面加的是什么标签,最后这个Container组件就会被解析为什么,且具有模板字符串里面的样式*/}
const Container = styled.div`
width:300px;
height:300px;
background-color:lime;
`
const Warpper = styled.section`
width:200px;
height:200px;
background-color:red;
div{
color:yellow;
font-size:20px;
width:100px;
height:100px;
ul{
li{
list-style-type:none;
}
}
}
`
class Stylefour extends Component{
render(){
return (
这里是第四种样式组件
- 任务一
- 任务二
- 任务三
{/*这个组件会被解析为一个div,且具有上面写的样式*/}
)
}
}
export default Stylefour
Props 属性: 是描述组件的性质、特征的,组件自身不会轻易改变的
比如:在父组件的模板中,子组件的身上写一个name="lzc"
在子组件里面写:{this.props.name}即可展示这个属性数据
在组件自己的内部(如类组件里面)用关键字:
static defaultProps = {
info:'爱情来的太快,就像龙卷风',
}
这个属性也会在组件的props上面,可以用{this.props.info}来展示
如:在类组件中写
state = {
info:'哈哈哈',
}
组件访问的话,直接用 {this.state.info} 即可
如:在类组件中写,这里props可以不写,默认是props
constructor (props) {
super(props)
this.state = {
name : 'lzc',
info : '乐不思蜀',
}
}
通过super继承了绑定在当前组件上的属性,可以用props访问
而组件的状态用state来访问{this.state.name}
即:构造器形式的里面既有属性,又有状态
在15版本以前
用getDefaultProps(){} 钩子函数来管理属性
用getIntalState(){} 钩子函数来管理状态
现在合并为constructor(){}
import React, { Component } from 'react'
import PropTypes from 'prop-types'
class Hello extends Component {
static defaultProps = { // 内部设置属性
info: 1000
}
render () {
console.log( this )
return (
外部传来了一个属性 { this.props.name }
内部设置的属性 { this.props.info }
组件的内容 { this.props.children }
)
}
}
Hello.propTypes = {
info: PropTypes.number
}
export default Hello