我应该在React中使用属性(除了props或state之外)吗?

YiFeng

我想知道我是否应该在React组件中使用属性(不是props,不是state)?

例如,

var myComponent = React.createClass ({
    _text: '',   // Something like this, a property other than props or state
});

利弊是什么,用例是什么?

属性非常适合存储与视图无关的数据,但对于修改行为很有用。

为什么不statepropsstate最好在调用时进行修改setState但是调用setState也会调用render,从而导致性能开销。虽然,我们可以render通过重写来取消呼叫componentShouldUpdate,但这使事情变得太复杂了。所以,state不是最好的地方。props似乎是个不错的选择,但是它可能会被我们覆盖而无法覆盖,因此也不理想。

一个示例用例:您在中分配了一个资源componentDidMount,需要清理。最好的去处是componentWillUnmount但是,您如何保留分配哪些资源的选项卡呢?您使用属性。

React.createClass({
  componentDidMount() {
    // `allocateResource` is entirely made up, but functions like it exist.
    this.someResourcePointer = allocateResource();
  },

  componentWillUnmount() {
    // `deallocateResource` is also entirely made up.
    deallocateResource(this.someResourcePointer);
  },

  render() {
    return <div>{/* ... */}</div>;
  }
});

一些实际示例:

  • 订阅和取消订阅事件发送者
  • 具有画布上下文池,如果需要生成多个画布上下文

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我应该在 Kotlin 的界面中使用属性吗?

我不应该在html中使用数据属性吗?

我应该在Laravel中使用belongsTo或hasOne吗?

我应该在ECS中使用静态类吗?

我应该在Couchbase中使用本地索引吗?

我应该在Promise中使用return吗?

我应该在Java中使用Qt Jambi吗?

我应该在调度块中使用“ weakSelf”吗?

我应该在嵌套块中使用weakSelf吗?

我应该在main(){}中使用#include语句吗?

我应该在钩子中使用useMemo吗?

我应该在BehaviorSubject中使用asObservable吗?

我应该在TDD中使用lambda吗?

我应该在React JS中使用自定义事件委托吗

我们应该在 React Native 中使用类变量吗?

我应该在输入字段中使用受控的React组件吗(出于安全考虑)?

我应该在 React 16 的 componentDidUpdate 中使用 setState 条件更新吗?

我应该在各处使用React.PureComponent吗?

如果数据不会改变,在React组件中使用状态是否是错误的做法?我应该在类上使用属性吗?

我应该在配置文件之外使用env()吗?

我们应该在React Functional Components中的每个函数处理程序中使用useCallback吗

我应该在我的新闻应用程序项目中使用rss feed吗?

我应该在PromiseKit块中使用[弱自我]吗?

我应该在我的iOS Push Notification App中使用核心数据吗?

我应该在我的药剂代码中使用Mix.Utils吗?

我应该在计算属性的闭包内使用弱自我吗?

Promise { <state>: "pending" } - 我们应该在 async / await 之后使用 .then 吗?使困惑

将nginx与expressJS结合使用时,我应该在express或nginx中使用压缩吗?

我应该在Django中使用通用外键吗?如何使用?