亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將類組件重寫為使用鉤子的組件

如何將類組件重寫為使用鉤子的組件

牧羊人nacy 2022-06-05 16:37:59
我需要有關如何將組件從類組件重寫為使用 react-hooks 的組件的幫助。React hooks 和 react redux 是我習慣于編寫代碼的方式,所以我知道這部分。但是我需要學習更多關于類組件如何工作的知識,以便我可以更輕松地從教程和較舊的材料中獲取知識。如果有人有關于如何重寫它的提示的建議,或者關于易于閱讀的材料或視頻的提示,這些提示可以解釋使用鉤子的類和組件之間的區別。這將非常有幫助。謝謝!我要重寫的代碼示例如下所示。如果有人知道如何重寫此示例的部分內容,那將很有幫助:import React, { Component } from 'react'import PropTypes from 'prop-types'import Grid from './Grid'import Controls from './Controls'import { game } from './game'import './puzzle.css'class Puzzle extends Component {  static propTypes = {    size: PropTypes.number  }  static defaultProps = {    size: 4  }  state = {    grid: game.init({ size: this.props.size }),    gameWon: false,  }  onCellClick = (index) => {    const [grid, isWon] = game.swapCell(index)    this.setState(() => ({ grid, gameWon: isWon }))  }  restart = (type) => { this.setState(() => ({ grid: game.reset(type), gameWon: false })) }  render() {    const { grid, gameWon } = this.state    return (      <>        { gameWon          ? <div className="win">Grattis!</div>          : <Grid items={grid} onClick={this.onCellClick}/>        }        <Controls restart={this.restart}/>      </>    )  }}export default Puzzle
查看完整描述

1 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

最省力的方法是將處理狀態的舊方式切換到 react-hook 方式。

從...開始:

const [grid, setGrid] = useState(game.init({ size: this.props.size }));
const [gameWon, setGameWon] = useState(false);

現在你使用setGrid(), setGameWon()而不是this.setState()

您還可以將兩種狀態組合成一個狀態對象


查看完整回答
反對 回復 2022-06-05
  • 1 回答
  • 0 關注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號