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)`该死,你说得对!忘了带花括号。。谢谢!是的,对不起。它告诉我,我必须等待,直到我可以接受。我猜你的回答有点太快了:-)-接受了!该死,你说得对!忘了带花括号。。谢谢!是的,对不起。它告诉我,我必须等待,直到我可以接受。我猜你的回答有点太快了:-)-接受了!