Javascript 更改React中对象的输入值
我有多个颜色输入,以独特的颜色显示。它们是从嵌套对象的辅助对象中获取其值。当我尝试更新该值时,什么也没有发生。我注销了状态,看到所有颜色仍然是一个对象。我试图获取各个颜色值,并将其用作Javascript 更改React中对象的输入值,javascript,arrays,reactjs,object,Javascript,Arrays,Reactjs,Object,我有多个颜色输入,以独特的颜色显示。它们是从嵌套对象的辅助对象中获取其值。当我尝试更新该值时,什么也没有发生。我注销了状态,看到所有颜色仍然是一个对象。我试图获取各个颜色值,并将其用作Object.values()的初始状态,但没有成功 作为测试,我创建了一个新的输入和状态,其中包含一个随机的十六进制值,并且更新后没有任何问题。我假设,因为我仍然在获取处于colorVal状态的对象,所以我需要以某种方式获取color对象的值并将其转换为字符串 我有点迷路了,已经为此工作了好几天了 显示输入的组
Object.values()
的初始状态,但没有成功
作为测试,我创建了一个新的输入和状态,其中包含一个随机的十六进制值,并且更新后没有任何问题。我假设,因为我仍然在获取处于colorVal
状态的对象,所以我需要以某种方式获取color对象的值并将其转换为字符串
我有点迷路了,已经为此工作了好几天了
显示输入的组件
import React, { useState } from 'react'
import ColorPicker from './ColorPicker';
import { colorSelect, colorNames, colors } from '../Theme/colorSections'
import styled from 'styled-components';
function ColorPickerSection() {
const [colorVal, setColorVal] = useState(colors)
const onColorChange = (e) => {
setColorVal(e.target.value)
}
console.log(colorVal);
return (
<div>
{Object.keys(colorSelect).map(groupName => {
return (<div>
<GroupName>{groupName}</GroupName>
{Object.keys(colorSelect[groupName]).map(color => {
return (
<ColorPicker
key={color}
label={color}
value={colorVal[color]}
onChange={onColorChange}
/>
)
})}
</div>)
})}
</div>
)
}
假设e.target.value确实是字符串中的新颜色代码。 “颜色”是一个开始的对象,因此当您获得新的颜色代码时,您需要相应地更新对象属性
const onColorChange=(e,colorValKey)=>{
setColorVal({
…颜色,
[colorValKey]:e.target.value
})
}
返回(
{Object.keys(colorSelect).map(groupName=>{
返回(
{groupName}
{Object.keys(colorSelect[groupName]).map(color=>{
返回(
变色(e,颜色)}
/>
)
})}
)
})}
)
import React from 'react';
import styled from 'styled-components'
function ColorPicker(props) {
return (
<ColorPickerContainer>
<p>{props.label}</p>
<ColorSwatch type="color" value={props.value} onChange={props.onColorChange} />
<HexInput
type="text"
value={props.value}
onChange={props.onColorChange}
/>
</ColorPickerContainer>
);
}
const colorSelect = {
'Line Highlights': {
highlightBackground: '#F7EBC6',
highlightAccent: '#F7D87C'
},
'Inline Code': {
inlineCodeColor: '#DB4C69',
inlineCodeBackground: '#F9F2F4'
},
'Code Blocks': {
blockBackground: '#F8F5EC',
baseColor: '#5C6E74',
selectedColor: '#b3d4fc'
},
'Tokens': {
commentColor: '#93A1A1',
punctuationColor: '#999999',
propertyColor: '#990055',
selectorColor: '#669900',
operatorColor: '#a67f59',
operatorBg: '#FFFFFF',
variableColor: '#ee9900',
functionColor: '#DD4A68',
keywordColor: '#0077aa'
}
}
const colorNames = []
const colors = {}
Object.keys(colorSelect).map(key => {
const group = colorSelect[key]
Object.keys(group).map(color => {
colorNames.push(color)
colors[color] = group[color]
})
})
export { colorSelect, colorNames, colors }