iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
自我挑戰組

React 學習之路系列 第 29

[進階指南] 嚴格模式( Day29 )

  • 分享至 

  • xImage
  •  
  1. 我們可以在開發環境中使用 <React.StrictMode> 進入嚴格模式
  2. 嚴格模式幫我們檢查不再使用的 life cycle、API 等
  3. 嚴格模式也幫我們檢查一些副作用

以下詳列:

  • 發現擁有不安全生命週期的 component //不再使用或更名的生命週期
  • 警告使用了 legacy string ref API
  • 警告使用到了被棄用的 findDOMNode
  • 偵測意想不到的副作用
  • 偵測 legacy context API

嚴格模式使用測試

  • 測試 ReactDOM.findDOMNode ,未提出警告
  • 測試 componentWillReceiveProps 有 warning
  • 測試 legacy string ref API,有紅色的 warning

//測試程式碼
class Greeting extends React.Component {
  
  componentWillReceiveProps() {
    console.log("Will Mount")
  }
  action() {
    console.log(ReactDOM.findDOMNode(this.refs.input).value);
  }
  render() {
    return (<div>
        <h1>Hello, {this.props.name}</h1>
        <input onClick={() => this.action()} ref='input' />
        </div>
     )
  }
}

class App extends React.Component{ 
    render(){
        return(
          <React.StrictMode>
            <Greeting name="Jim"/>
          </React.StrictMode>
        );
    }
}

ReactDOM.render(
  <App/>,
  document.getElementById('root')
);

所以嚴格模式是什麼?

嚴格模式是一個用來突顯應用程式裡潛在問題的工具。如同 Fragment 一樣,嚴格模式不會 render 任何可見的 UI。它為了底下的所有的依賴們啟動了額外的檢查和警告。

以上今天。

參考資料:
https://zh-hant.reactjs.org/docs/strict-mode.html#warning-about-legacy-string-ref-api-usage
https://zh-hant.reactjs.org/docs/react-dom.html#finddomnode
https://zh-hant.reactjs.org/docs/legacy-context.html


上一篇
[進階指南] 不使用 JSX 開發 React( Day28 )
下一篇
學習指南 + 結賽感言( Day30 )
系列文
React 學習之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言