gpt4 book ai didi

reactjs - 是否可以在其构造函数签名中安全地解构 ES6 React Component 类?

转载 作者:行者123 更新时间:2023-12-01 13:41:27 25 4
gpt4 key购买 nike

我有一个扩展 React.Component 的 ES6 类,即一个 React 组件。假设我的组件如下所示:

class MyComponent extends React.Component {
constructor({ foo, bar, baz, ...props }) {
super({ foo, bar, baz, ...props });
this.state = { foo, bar, baz };
}

render() {
return <span>Foo: {this.state.foo} Bar: {this.state.bar} Baz: {this.state.baz}</span>
}
}

在这里,我在构造函数的签名中使用解构来提取一些我想在组件状态中使用的 Prop 。我确保将这些值传递给 super。然而,当我实际执行类似的代码时,我看到了如下所示的警告:

Warning: MyComponent(...): When calling super() in MyComponent, make sure to pass up the same props that your component's constructor was passed.

所以我的问题是,是否可以像我展示的那样在没有相关警告的情况下解构构造函数的签名? (我假设警告是有充分理由的,而且我同样确定我不完全理解其中的含义。)

最佳答案

If you look at this line in the React source code ,您会看到它进行浅层检查以查看 props 对象是否匹配。

// other stuff

var propsMutated = inst.props !== publicProps;

// other stuff

warning(
inst.props === undefined || !propsMutated,
'%s(...): When calling super() in `%s`, make sure to pass ' +
'up the same props that your component\'s constructor was passed.',
componentName, componentName
);

当你将它传递给 super 时,你创建了一个 props 的克隆,所以它会引发警告。

关于reactjs - 是否可以在其构造函数签名中安全地解构 ES6 React Component 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40478041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com