Javascript 如何防止在div中更改样式对象?
我得到以下错误: 警告:Javascript 如何防止在div中更改样式对象?,javascript,reactjs,ecmascript-6,react-jsx,Javascript,Reactjs,Ecmascript 6,React Jsx,我得到以下错误: 警告:div被传递了一个以前被复制过的样式对象 变异了。不推荐使用变异样式。考虑克隆它 事先。检查选项卡的渲染。以前的样式:{填充: “20px”,显示:“块”}。变异样式:{填充:“20px”,显示: “无”} 从React/JSX中我的render()方法中的这段代码: const clonedChildren = React.Children.map(this.props.children, (el, i) => { let visibility = 'none
div
被传递了一个以前被复制过的样式对象
变异了。不推荐使用变异样式
。考虑克隆它
事先。检查选项卡的渲染。以前的样式:{填充:
“20px”,显示:“块”}
。变异样式:{填充:“20px”,显示:
“无”}
从React/JSX中我的render()
方法中的这段代码:
const clonedChildren = React.Children.map(this.props.children, (el, i) => {
let visibility = 'none';
if (i === this.state.activeIndex) visibility = 'block';
const newStyle = { display: visibility };
const style = Object.assign(el.props.style, newStyle);
return React.cloneElement(el, { style });
});
为什么会发生这种错误?我已经在克隆元素了。我如何解决这个问题?不要改变你的el.props.style
。当前您正在使用Object.assign
并通过将其用作目标对象来修改el.props.style
。而是使用对象。分配并使用新对象作为目标:
const style = Object.assign({}, el.props.style, newStyle);
这不会变异el.props.style
。它将改变新对象{}
。进一步阅读Object.assign
at.不要改变你的el.props.style
。当前您正在使用Object.assign
并通过将其用作目标对象来修改el.props.style
。而是使用对象。分配并使用新对象作为目标:
const style = Object.assign({}, el.props.style, newStyle);
这不会变异el.props.style
。它将改变新对象{}
。进一步阅读Object.assign
at.您忘记了将空对象作为第一个参数:`Object.assign({},el.props.style,newStyle)`您忘记了将空对象作为第一个参数:`object.assign({},el.props.style,newStyle)`该死,你说得对!忘了带花括号。。谢谢!是的,对不起。它告诉我,我必须等待,直到我可以接受。我猜你的回答有点太快了:-)-接受了!该死,你说得对!忘了带花括号。。谢谢!是的,对不起。它告诉我,我必须等待,直到我可以接受。我猜你的回答有点太快了:-)-接受了!