【发布时间】:2018-06-27 09:50:36
【问题描述】:
我有一个小部件,我们称之为MyText。它有 2 个可选的 props,x 和 y。如果在道具中定义了y,我想强制x,反之亦然。
这里是 MyText
interface Props {
x?: number,
y?: number,
}
class MyText extends React.Component<Props> {
render() {
return (
<View>
<Text>X is : {this.props.x}</Text>
<Text>Y is : {this.props.y}</Text>
</View>
);
}
}
当我调用它时,我想像这样输出
<MyText x={1} /> // Error: Should say missing y
<MyText y={4} /> // Error: Should say missing x
<MyText x={1} y={4}/> // No error
<MyText/> // No error
是否可以使用 TypeScript ?
当前解决方案:
使用单个对象存储x和y,并使其可选。
interface XY{
x : number,
y : number
}
interface Props {
xy?: XY,
}
class MyText extends React.Component<Props> {
render() {
return (
<View>
<Text>X is : {this.props.xy.x}</Text>
<Text>Y is : {this.props.xy.y}</Text>
</View>
);
}
}
然后这样称呼它
<MyText xy={{x:1,y:2}} />
我想知道是否有比这更好的方法,例如内置关键字或其他使一个属性依赖于另一个属性的技术。
【问题讨论】:
标签: reactjs typescript react-native