提问人:nujabes 提问时间:2/20/2017 最后编辑:Pekkanujabes 更新时间:2/20/2017 访问量:2309
在带有 react 的 ES6 中,我可以只解构一次对象以用于多种方法吗?
In ES6 with react, can I destructure an object just once for use in multiple methods?
问:
import React, { Component } from 'react'
import { connect } from 'react-redux';
export default function(strategies = []) {
class Authentication extends Component {
constructor() {
super()
this.state = {
allGreen: true
}
}
componentWillMount() {
const { history } = this.props
strategies.map(strategy => {
if (!this.props.auth[strategy]) {
this.setState({ allGreen: false })
history.replace('/')
}
})
}
componentWillUpdate(nextProps, nextState) {
const { history } = this.props
strategies.map(strategy => {
if (!nextProps.auth[strategy]) {
this.setState({ allGreen: false })
history.replace('/')
}
})
}
render() {
if (!this.state.allGreen) return (<div></div>)
return this.props.children
}
}
function mapStateToProps(state) {
return {
auth: state.auth
}
}
return connect(mapStateToProps)(Authentication)
}
我通常在 ES6 中使用“析构函数对象”
例如,const { history } = this.props like。
但是,我想知道是否有一种有效的方法可以只销毁一个对象,并在所有组件的方法中使用它。(componentWillMount, componentWillUpdate ...)
上图中,我在 componentWillMount 方法和 componentWillUpdate 方法中使用了两次对象销毁。( const { history } = this.props )
我只想破坏一次物体!有什么解决办法吗?
答:
4赞
keul
2/20/2017
#1
多次使用解构没有性能问题(如果这是你的恐惧,你不会扩展整个对象)。
ES 6 代码如下:
const aaa = {
a: 5,
b: 'ffff'
}
const { bbb } = aaa;
...被翻译为...
var aaa = {
a: 5,
b: 'ffff'
};
var bbb = aaa.bbb;
所以使用它,或者干脆使用this.props.history
评论
0赞
nujabes
2/20/2017
好的,谢谢你。我只是不想写两次相同的描述..似乎我别无选择:)
评论
getHistory()