反应颜色无法读取未定义的 属性 'value'
react-color Cannot read property 'value' of undefined
(react 中的一种新方式)我正在尝试将 react-color 实现为项目中的功能组件,但我无法更改颜色。
所有显示都很好,但是当我尝试更改颜色时出现错误:
TypeError: Cannot read property 'value' of undefined
我尝试改用 class 组件,它工作得更好,但我也遇到了非常相似的错误。一些想法?
import React from 'react';
import {FieldUpdating} from './FieldUpdating';
import {FieldUpdateError} from './FieldUpdateError';
import {ColorBox} from '../components/ColorBox';
import {ChromePicker} from 'react-color';
export function ColorEditor({label, value, setValue, updating, updateError}) {
return (
<div className="label-input mb-2 form-group">
<label>{label}:</label>
{value} //tried to get the value that displays as a string hex (hex string displays correct)
<ChromePicker
color={value}
value={value}
onChange={e => {
setValue(e.target.value);
}}
/>
<input value={value}/>
{updating && <FieldUpdating />}
{updateError && <FieldUpdateError error={updateError} />}
<ColorBox color={value} />
</div>
);
}
你只是做错了。显然您正在尝试访问 e.target.value
,而 e
returns 类似:
{
"hsl": {
"h": 0,
"s": 0.5626318818338767,
"l": 0.648956228956229,
"a": 1
},
"hex": "#d87373",
"rgb": {
"r": 216,
"g": 115,
"b": 115,
"a": 1
},
"hsv": {
"h": 0,
"s": 0.46666666666666656,
"v": 0.8464646464646465,
"a": 1
},
"oldHue": 0,
"source": "rgb"
}
所以基本上您需要做的是访问e.hex
,如下所示:
<ChromePicker
color={value}
value={value}
onChange={e => {
setValue(e.hex);
}}
/>
或者喜欢(使用解构):
<ChromePicker
color={value}
value={value}
onChange={({hex}) => {
setValue(hex);
}}
/>
(react 中的一种新方式)我正在尝试将 react-color 实现为项目中的功能组件,但我无法更改颜色。 所有显示都很好,但是当我尝试更改颜色时出现错误:
TypeError: Cannot read property 'value' of undefined
我尝试改用 class 组件,它工作得更好,但我也遇到了非常相似的错误。一些想法?
import React from 'react';
import {FieldUpdating} from './FieldUpdating';
import {FieldUpdateError} from './FieldUpdateError';
import {ColorBox} from '../components/ColorBox';
import {ChromePicker} from 'react-color';
export function ColorEditor({label, value, setValue, updating, updateError}) {
return (
<div className="label-input mb-2 form-group">
<label>{label}:</label>
{value} //tried to get the value that displays as a string hex (hex string displays correct)
<ChromePicker
color={value}
value={value}
onChange={e => {
setValue(e.target.value);
}}
/>
<input value={value}/>
{updating && <FieldUpdating />}
{updateError && <FieldUpdateError error={updateError} />}
<ColorBox color={value} />
</div>
);
}
你只是做错了。显然您正在尝试访问 e.target.value
,而 e
returns 类似:
{
"hsl": {
"h": 0,
"s": 0.5626318818338767,
"l": 0.648956228956229,
"a": 1
},
"hex": "#d87373",
"rgb": {
"r": 216,
"g": 115,
"b": 115,
"a": 1
},
"hsv": {
"h": 0,
"s": 0.46666666666666656,
"v": 0.8464646464646465,
"a": 1
},
"oldHue": 0,
"source": "rgb"
}
所以基本上您需要做的是访问e.hex
,如下所示:
<ChromePicker
color={value}
value={value}
onChange={e => {
setValue(e.hex);
}}
/>
或者喜欢(使用解构):
<ChromePicker
color={value}
value={value}
onChange={({hex}) => {
setValue(hex);
}}
/>