我有以下组件:
HelloWorld.js
class HelloWorld extends Component {
render() {
return (
<Text style={styles.text}>Hello World!</Text>
);
}
}
我将其导入另一个文件中,如下所示:
SignIn.js
class SignIn extends Component {
render() {
return (
<HelloWorld style={styles.signInText} />
);
}
}
正如您在 SignIn.js 中看到的那样,我希望将styles.signInText
包含在组件中,但是由于我已将style属性设置为,因此无法执行此操作HelloWorld.js
我知道我可以将这些样式导入 SignIn.js 并让它像这样:<HelloWorld style={[styles.text, styles.signInText]} />
然而这是一个混乱的解决方案。
如何在 HelloWorld 组件中允许使用其他样式?感谢。
答案 0 :(得分:2)
如果您希望style
Text
属性的值是styles
内的HelloWorld
和传递给style
的值的组合HelloWorld
的属性,你可以这样做。
class HelloWorld extends Component {
render() {
return (
<Text style={{...styles, ...this.props.style}}>Hello World!</Text>
);
}
}
这会将本地styles
变量解构为新对象,同时将style
HelloWorld
属性解构为同一对象。最终结果将传递到style
的{{1}}属性。请记住,如果传递给Text
的{{1}}属性具有本地style
对象文字中也存在的属性键,它将覆盖本地HelloWorld
中的属性键。 object literal。
答案 1 :(得分:0)
您需要将样式作为道具传递给HelloWorld
组件。
<强> SignIn.js 强>
class SignIn extends Component {
render() {
return (
<HelloWorld signInText={styles.signInText} />
);
}
}
<强> HelloWorld.js 强>
class HelloWorld extends Component {
render() {
const { signInText } = this.props;
return (
<Text style={[styles.text, signInText]}>Hello World!</Text>
);
}
}