组件内容补充
目录
import React, { createRef, forwardRef, PureComponent } from 'react'
export default class App extends PureComponent {
constructor(props) {
super(props);
this.titleRef = createRef();
this.profileRef = createRef();
this.homeRef = createRe*();
}
render() {
return (
<div>
app: {this.props.name}
<h2 ref={this.titleRef}>Hello World</h2>
<Profile ref={this.profileRef} />
<Home ref={this.homeRef} />
<button onClick={e => this.changeRef()}>改变</button>
</div>
)
}
changeRef() {
console.log(this.titleRef.current);
this.titleRef.current.innerHTML = 'Hello React';
console.log(this.profileRef.current);
this.profileRef.current.innerHTML = '使用ref改变了函数式组件';
console.log(this.homeRef.current);
}
}
const Profile = forwardRef(function (props, ref) {
return <h2 ref={ref}>profile</h2>
})
class Home extends PureComponent {
render() {
return <h2>home</h2>
}
}
import React, { PureComponent } from 'react'
import ReactDOM from 'react-dom';
class Modal extends PureComponent {
render() {
return ReactDOM.createPortal(this.props.children,document.getElementById('modal'))
}
}
class Home extends PureComponent {
render() {
return (
<div>
<h2>Home</h2>
<Modal>
<h2>你好啊,czm (在modal的根节点上)</h2>
</Modal>
</div>
)
}
}
export default class App extends PureComponent {
render() {
return (
<div>
<Home/>
<Modal>
<div>
<h2>你好啊,React (在modal的根节点上)</h2>
</div>
</Modal>
</div>
)
}
}
import React, { Fragment, PureComponent } from 'react'
export default class App extends PureComponent {
constructor(props) {
super(props);
this.state = {
counter: 0,
friends: [
{name:'czm', age:18},
{name:'clm', age:18},
]
}
}
render() {
return (
<>
<h2>计数: {this.state.counter}</h2>
<button onClick={e => this.increment()}>+1</button>
<div>
{
this.state.friends.map((item, index) => {
return (
<Fragment key={item.name}>
<span>{item.name} </span>
<span>{item.age}</span>
<hr/>
</Fragment>
)
})
}
</div>
</>
)
}
increment() {
this.setState({
counter: this.state.counter + 1
})
}
}