Reactjs 使用事件处理程序更改按钮外观
我想构建我的功能组件BoldButton,当用户单击小写字母a或大写字母a时,按钮的文本将更改为bold。下面是我正在进行的工作Reactjs 使用事件处理程序更改按钮外观,reactjs,Reactjs,我想构建我的功能组件BoldButton,当用户单击小写字母a或大写字母a时,按钮的文本将更改为bold。下面是我正在进行的工作 import React, { useEffect, useState } from 'react'; const BoldButon = () => { const [color, setColor] = useState("black") useEffect(() => { })
import React, { useEffect, useState } from 'react';
const BoldButon = () => {
const [color, setColor] = useState("black")
useEffect(() => {
})
const changeColor = () => {
setColor("black")
}
return (
<div>
<button text={{style:color}} onClick={changeColor}>
A
</button>
<button text={{style:color}} onClick={changeColor}>
a
</button>
</div>
)
}
export default BoldButon;
import React,{useffect,useState}来自“React”;
常量BoldButon=()=>{
const[color,setColor]=useState(“黑色”)
useffect(()=>{
})
常量changeColor=()=>{
setColor(“黑色”)
}
返回(
A.
A.
)
}
导出默认的BoldButon;
这是我在进行模拟技术面试时遇到的一个问题,所以我想知道在使用功能组件时如何解决这个问题**不确定是否需要利用useEffect来解决此问题。目前,需要解决的语法问题有:
<button
style={{fontWeight: bold ? 'bold' : 'normal'}}
onClick={changeWeight}
>
A
</button>
<button
style={{fontWeight: !bold ? 'bold' : 'normal'}}
onClick={changeWeight}
>
a
</button>
您不需要
useffect
对于这种功能,您可以使用useState
钩子来管理变量,该变量确定用户是否单击了按钮。此外,您还可以使用usemo
钩子来保持样式
对象,该对象返回粗体
或正常
。请注意,toggleBold
会切换字体大小,因此,如果用户多次单击,它将在bold
和normal
之间切换
import React, { useState, useMemo } from 'react';
const BoldButon = () => {
const [boldA, setBoldA] = useState(false)
const [boldB, setBoldB] = useState(false)
const toggleBold = (buttonType) => () => {
if(buttonType === 'firstButton') {
setBoldA(prevState => !prevState)
} else {
setBoldB(prevState => !prevState)
}
}
const buttonStyleA = useMemo(() => {
return {fontWeight: boldA ? 'bold' : 'normal'}
}, [boldA])
const buttonStyleB = useMemo(() => {
return {fontWeight: boldB ? 'bold' : 'normal'}
}, [boldB])
return (
<div>
<button style={buttonStyleA} onClick={toggleBold('firstButton')}>
A
</button>
<button style={buttonStyleB} onClick={toggleBold('secondButton')}>
B
</button>
</div>
)
}
export default BoldButon;
import React,{useState,usemo}来自“React”;
常量BoldButon=()=>{
const[boldA,setBoldA]=useState(false)
const[boldB,setBoldB]=useState(false)
常量toggleBold=(按钮类型)=>()=>{
如果(buttonType==='firstButton'){
setBoldA(prevState=>!prevState)
}否则{
setBoldB(prevState=>!prevState)
}
}
常量按钮样式=使用备注(()=>{
返回{fontWeight:boldA?'bold':'normal'}
},[boldA])
const buttonStyleB=useMemo(()=>{
返回{fontWeight:boldB?'bold':'normal'}
},[boldB])
返回(
A.
B
)
}
导出默认的BoldButon;
text={{style:color}
-这应该做什么?在这种情况下,我只希望文本是黑色的,但现在看它可能没有什么用处。我想我需要在中使用三元运算符。谢谢你的回答。所以我现在正在使用它,但不幸的是,当我单击任何一个按钮时,结果都是粗体。你没有指定单击后,只有一个按钮应该是粗体的。让我来解决这个问题。是的,我也不确定,但因为它说:“小写a或大写a,按钮的文本更改为粗体.B。”看起来可能只是一个按钮的文本需要加粗。但是是的,完全有可能阅读这个问题。你的答案很酷!可能有一些打字错误,我没有测试这个代码,它只是在编辑器上写的。但是我希望你能理解逻辑背后的想法,并且能够修复任何打字错误。
import React, { useState, useMemo } from 'react';
const BoldButon = () => {
const [boldA, setBoldA] = useState(false)
const [boldB, setBoldB] = useState(false)
const toggleBold = (buttonType) => () => {
if(buttonType === 'firstButton') {
setBoldA(prevState => !prevState)
} else {
setBoldB(prevState => !prevState)
}
}
const buttonStyleA = useMemo(() => {
return {fontWeight: boldA ? 'bold' : 'normal'}
}, [boldA])
const buttonStyleB = useMemo(() => {
return {fontWeight: boldB ? 'bold' : 'normal'}
}, [boldB])
return (
<div>
<button style={buttonStyleA} onClick={toggleBold('firstButton')}>
A
</button>
<button style={buttonStyleB} onClick={toggleBold('secondButton')}>
B
</button>
</div>
)
}
export default BoldButon;