我想实现的是我想转换十六进制格式的颜色为RGB颜色,并作出POST请求与输入类型=“颜色”。
问题/错误消息
hexToRGB()的内容总是[0,0,0],我不能改变颜色。当我移动颜色选择器时,console.log(e.target.value)在控制台中显示为#944242(示例),所以我确信可以工作。我不知道如何在React.js中使用input type=“color”将十六进制颜色转换为RGB颜色
我参考以下链接,但没有工作...
https://codepen.io/urosurosevic/pen/pagxYE
const LightDetailCondo = () => {
const [hex_value, setHexValue] = useState("#fffff");
const hexToRGB = (hex_value) => {
hex_value = '0x' + hex_value
let r = hex_value >> 16 & 0xFF
let g = hex_value >> 8 & 0xFF
let b = hex_value & 0xFF
return `[${r}, ${g}, ${b}]`
}
const handleSliderChange2 = (e) => {
lightOn(e.target.value)
setHexValue(e.target.value)
console.log(e.target.value)
}
console.log(hexToRGB())
const lightOn = async() => {
console.log("Body sent to server", {
rgb_color: hexToRGB(),
})
await axios.post('xxx.com',
{
rgb_color: hexToRGB(),
},
{
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${cookies.get('accesstoken')}`
},
})
.then(result => {
console.log('Color Changed!');
})
.catch(err => {
console.log('Missed Color Changed!');
});
}
useEffect(() => {
}, []);
return (
<div>
<input type="color" name="favorite_color" onChange={handleSliderChange2}>
</div>
);
}
export default LightDetailCondo;
2条答案
按热度按时间hi3rlvi21#
你的
hexToRGB
函数需要一个十六进制值的参数。你调用它时没有参数,所以它总是未定义的。你也使用了与状态变量相同的参数名称,所以在方法内部你实际上是在隐藏外部的参数。你可以
1.删除该参数,以便它使用外部
hex_value
1.将外部
hex_value
作为参数传递给方法就像
a8jjtwal2#
也许你可以用这个: