原文鏈接:React項目詳解
GITHUB:react-webpack-config
持續更新...
React項目指導
使用webpack
需要安裝的依賴
-
webpack
,webpack-cli
,react
,react-dom
-
babel-loader
,@babel/core
,@babel/preset-env
,@babel/preset-react
- 設置
.babelrc
,{"presets": ["@babel/preset-env","@babel/preset-react"]}
-
設置
scripts
:"dev": "webpack --mode development", "build": "webpack --mode production"
-
設置
webpack-dev-server
:devServer: { compress: true, port: 9000, hot: true }, "start": "webpack-dev-server --config webpack.config.js"
-
設置
performance
:performance: { hints: false }
Component
-
基本組件
let title = <h1>Hello, world!</h1> ReactDOM.render(title,document.getElementById('root'))
-
動態組件
import React from 'react'; import ReactDOM from 'react-dom'; let displayTime = () => { let nowTime = ( <div> <span>現在時間:{new Date().toLocaleTimeString()}</span> </div> ); ReactDOM.render(t nowTime, document.getElementById('root') ); }; setInterval(displayTime, 1000);
-
class
組件構建器import React, {Component} from 'react'; import ReactDOM from 'react-dom'; class HelloTitle extends Component { render() { return <h1>Hello,World!</h1> } } ReactDOM.render( <HelloTitle/>, document.getElementById('root') );
-
props
屬性import React, {Component} from 'react'; import ReactDOM from 'react-dom'; class HelloTitle extends Component { render() { return <h1>Hello,{this.props.name}!</h1> } } let titleDiv = ( <div> <HelloTitle name="React"/> <HelloTitle name="World"/> </div> ); ReactDOM.render( titleDiv, document.getElementById('root') );
-
props
多層使用import React, {Component} from 'react'; import ReactDOM from 'react-dom'; class HelloTitle extends Component { render() { return <h1>Hello,{this.props.name}!</h1> } } class HelloDiv extends Component { render() { return <div><HelloTitle name={this.props.name}/></div> } } ReactDOM.render( <HelloDiv name="React"/>, document.getElementById('root') );
-
組件複用
import React, {Component} from 'react'; import ReactDOM from 'react-dom'; class HelloTitle extends Component { render() { return <h1 style={this.props.style}>{this.props.content}</h1> } } class HelloDiv extends Component { render() { return <div> <HelloTitle content="比較大的字" style={{'fontSize': 18}}/> <HelloTitle content="比較小的字" style={{'fontSize': 12}}/> </div> } } ReactDOM.render( <HelloDiv/>, document.getElementById('root') );
Component
的狀態state
和生命週期
state
屬性
constructor(props) {
super(props);
this.state = {
time: new Date().toLocaleTimeString()
}
}
render() {
return <h1>現在時間是{this.state.time}</h1>
}
組件構建完成後先執行的動作,componentDidMount()
:
componentDidMount() {
let upTime = () => {
this.setState({time: new Date().toLocaleTimeString()})
};
setInterval(upTime, 1000)
}
setState()
修改狀態值
this.setState({time: new Date().toLocaleTimeString()})