javascript - 在 render 中调用方法或使用 getter

标签 javascript reactjs getter es6-class

当渲染方法应返回计算值时,使用类方法是否更合适

class User extends Component {
  getFullName () {
    const { fname, lname } = this.props
    return `${lname}, ${fname}`
  }
  render () {
    return <div>FULLNAME: {this.getFullName()}</div>
  }
}

或 setter/getter :

class User extends Component {
  get fullName () {
    const { fname, lname } = this.props
    return `${lname}, ${fname}`
  }
  render () {
    return <div>FULLNAME: {this.fullName}</div>
  }
}

它们似乎都有效,但我不清楚在渲染方法中调用函数是否是一种好的做法,并且我很好奇是否其中一个比另一个更受欢迎以及为什么。

最佳答案

When a render method should return a calculated value, is it more appropriate to use a class method?

这里确实没有对错之分。这只是个人喜好和编码风格以及您喜欢的对象接口(interface)类型的问题。

如果您希望它的行为并且对调用者来说就像是一个属性,那么请使用 getter,以便调用者可以像属性一样访问它 console.log(user.fullName)

如果您希望它的行为并且在调用者看来就像对象必须计算并返回的东西,那么请使用方法 (console.log(user.getFullName())`。

在这种特殊情况下,两者都可以。由于没有 setter ,我个人可能会自己使用 user.getFullName() ,因此调用者很清楚,这是只能检索而不能设置的东西,并且可能是计算属性,而不是直接存储的东西。

They both seem to work, but I'm unclear if calling a function within a render method is good practice or not and am curious if one is preferred over the other and why.

调用 render() 内部的函数完全没有问题。那就完全没问题了。

关于javascript - 在 render 中调用方法或使用 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47999365/

相关文章:

javascript - 按两个不同的值对 JavaScript 对象数组进行排序

reactjs - react router (react-router-dom) 从当前路由(功能组件)设置页面标题?

javascript - 在对象函数中定义 getter/setter

vue.js - 如何在 Vuex 的 getter 函数中调用 getter 函数

swift - `public private(set) var numberOfEdits = 0` 可以写成 `public(get) private(set) var numberOfEdits = 0` 吗?

javascript - 参数列表后缺少 )。 (第 6 行文件 "code")

javascript - CSS3下拉菜单假JS问题

javascript - Alertify 让我点击两次

javascript - defaultProps 在 ReactJs 中有效吗

javascript - 如何创建 HTML5 拖放编辑器?