当渲染方法应返回计算值时,使用类方法是否更合适
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/