我厌倦了一直这样做:
<Elem x={x} y={y} z={z} />
<Elem x={this.props.x} y={this.props.y} z={this.props.z} />
有没有办法可以让这样的东西起作用?
<Elem x, y, z />
或
<Elem {x, y, z} />
答案 0 :(得分:20)
如果您的变量包含在对象中,例如fn3 <- function(Y, E, G, data){
Y <- deparse(substitute(Y))
E <- deparse(substitute(E))
G <- deparse(substitute(G))
df1 %>%
dplyr::group_by_at(vars(E, G)) %>%
dplyr::summarize_at(vars(Y), mean)
}
fn3(Y = Y, E = Env, G = Gen, data = df1)
,则会传播对象:
this.props
否则,您传播包含所需变量的新对象:
<Elem {...this.props} />
答案 1 :(得分:6)
正如评论中所指定的那样,您应该使用spread operator作为向组件发送多个参数的简写。
<Elem {...this.props} />
如果Elem组件是无状态组件,您应该能够像在组件上传递的任何参数一样访问props。在这种情况下,您可能不需要使用this.props
关键字。
答案 2 :(得分:2)
应该注意,这仅适用于对象。例如:
this.props = {
x: 'foo',
y: 'bar',
z: 'baz',
}
const {
x,
...allOtherProps
} = this.props
<Elem { ...allOtherProps } /> // works (allOtherProps is an object)
<Elem { ...x } /> // does not work (x is not an object)
<Elem x={ x } /> // works