簡體   English   中英

當我使用解構賦值來簡化我的道具時出錯

[英]getting error when I use destructuring assignment to simplify my props

我正在對該組件中的所有道具進行解構。 當我使用變量賦值存儲所有道具時,代碼有效,但是當我將道具存儲在函數參數中時,我收到一條錯誤消息。為什么會發生這種情況? 我沿着錯誤消息的組件在下面。

 import React from 'react'; import Counter from './Counter.js'; const Player = ( { id, name, score, changeScore, index } ) => { /*const { id, name, score, changeScore, index } = props*/ return ( <div className="player"> <span className="player-name"> <button className="remove-player" onClick={() => props.removePlayer(id)}>✖</button> { name } </span> <Counter score={score} changeScore={changeScore} index={index} /> </div> ); } export default Player;

來自瀏覽器的錯誤信息

<button className="remove-player" onClick={() => props.removePlayer(id)}>✖</button>

props沒有定義,因為不是做:

const Player = ( props ) => {

你正在做的:

const Player = ( { id, name, score, changeScore, index } ) => {

可能的解決方案

1. 在參數解構的末尾添加...props

const Player = ( { id, name, score, changeScore, index, ...props } ) => {

然后你可以使用props.removePlayer()

<button className="remove-player" onClick={() => props.removePlayer(id)}>✖</button>

2. 按照 Emile 的建議,將removePlayer添加到參數解構中:

const Player = ( { id, name, score, changeScore, index, removePlayer} ) => {

然后你使用removePlayer()而不是props.removePlayer()

<button className="remove-player" onClick={() => removePlayer(id)}>✖</button>
const Player = ( { id, name, score, changeScore, index, removePlayer } ) => {
/*const { id, name, score, changeScore, index } = props*/
  return (
    <div className="player">
      <span className="player-name">
        <button className="remove-player" onClick={() => removePlayer(id)}>✖</button>
        { name }
      </span>

      <Counter
      score={score}
      changeScore={changeScore}
      index={index}
      />
    </div>
  );
}

試試這個我希望這個作品 removePlayer 必須被解構

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM