ReactDOM.createRoot
时间: 2024-01-20 14:03:24 浏览: 116
ReactDOM.createRoot是React框架中的一个API,用于创建一个独立的根节点(Root)。它是React 16版本中引入的新特性,用于替代之前的ReactDOM.render方法。
通过使用createRoot,可以在应用中创建多个独立的根节点。每个根节点代表一个独立的React应用实例,它们可以独立地更新和渲染。
使用方法如下:
```javascript
import ReactDOM from 'react-dom';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<App />);
```
在上面的例子中,我们首先使用createRoot方法创建了一个根节点,并将其绑定到HTML页面中的一个DOM元素上(通过getElementById获取)。然后,我们调用root的render方法,将要渲染的组件(这里是App组件)传递进去。
与之前的ReactDOM.render方法相比,createRoot提供了更好的性能和并发渲染能力。它是React异步渲染模式的基础,可以更好地处理大型应用和复杂UI场景。
相关问题
ReactDOM.createRoot().render()作用
ReactDOM.createRoot().render()的作用是渲染一个React根组件,类似于ReactDOM.render()方法,但是在高版本的React中,官方建议使用ReactDOM.createRoot()方法创建与挂载根组件。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <!-- 引入react依赖库 注意顺序--> </head> <script src="https://cdn.staticfile.org/react/18.2.0/umd/react.development.js"></script> <script src="https://cdn.staticfile.org/react-dom/18.2.0/umd/react-dom.development.js"></script> <script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script> <body> <div id="root"></div> <script type="text/babel"> class App extends React.Component { constructor() { super(); this.state = { counter: 0 } } render() { const { counter } = this.state; return ( <div> <h2>当前计数:{counter}</h2> <button onClick={this.add.bind(this)} > +</button > <button onClick={this.sub.bind(this)} > -</button > </div > ) } add() { this.setState({ counter: this.state.counter++ }) } sub() { this.setState({ counter: this.state.counter-- }) } } const root = ReactDOM.createRoot(document.querySelector("#root")); root.render(<App />) </script> </body> </html>点击无效
这段代码是一个使用 React 和 Babel 的计数器组件,但是点击按钮无效的原因可能是因为代码中使用了后缀为 .development.js 的 React 和 ReactDOM 库,而应该使用后缀为 .production.min.js 的库,另外一种可能是因为代码中的 setState 操作不正确,应该使用 setState((prevState) => ({ counter: prevState.counter + 1 })) 和 setState((prevState) => ({ counter: prevState.counter - 1 })) 来更新 state。
阅读全文