3 回答

TA貢獻1852條經驗 獲得超1個贊
一般來說,refs 應該只作為 React 中的最后手段使用。React 本質上是聲明式的,所以與其讓父級“讓”子級禁用(這就是你對 ref 所做的),不如說它應該“說”子級應該被禁用(如下例):
const Home = () => {
const [isButtonDisabled, setIsButtonDisabled] = useState(false)
const handleButtonClick = () => {
setIsButtonDisabled(true)
}
return (
<>
<Card isDisabled={isButtonDisabled} onButtonClick={handleButtonClick} />
</>
)
}
const Card = ({isDisabled, onButtonClick}) => {
return (
<div>
<button disabled={isDisabled} onClick={onButtonClick}>Click me</button>
</div>
)
}

TA貢獻1780條經驗 獲得超1個贊
您不需要按名稱提及每個道具/屬性,因為您可以Object Destructuring在此處使用 javascript。
const Home = () => {
const [isButtonDisabled, setIsButtonDisabled] = useState(false)
const handleButtonClick = () => {
setIsButtonDisabled(true)
}
return (
<>
<Card isDisabled={isButtonDisabled} onButtonClick={handleButtonClick} />
</>
)
}
const Card = (props) => {
return (
<div>
<button {...props}>Click me</button>
</div>
)
}
您還可以選擇一些道具,并在子組件中以不同的方式使用它們。例如,請參見text下面的道具。
const Home = () => {
const [isButtonDisabled, setIsButtonDisabled] = useState(false)
const handleButtonClick = () => {
setIsButtonDisabled(true)
}
return (
<>
<Card text="I'm a Card" isDisabled={isButtonDisabled} onButtonClick={handleButtonClick} />
</>
)
}
const Card = ({text, ...restProps}) => {
return (
<div>
<button {...restProps}>{text}</button>
</div>
)
}
添加回答
舉報