如何在不包装PaperProvider的情况下更改React Native Paper中TextInput的文本颜色?
目前这有效:
const theme = {
...DefaultTheme,
colors: {
...DefaultTheme.colors,
text: "orange",
}
};
<PaperProvider theme={theme}>
<TargetComponent />
</PaperProvider>
但是我想通过父组件传递的道具来控制文本颜色。
奇怪的是,传递backgroundColor
可以,但是color
不能。
移除PaperProvider
包装也无济于事。
这是TargetComponent中的相关代码:
return (
<View style={styles.container}>
<TextInput
type="outlined"
style={this.props.style}
onChangeText={this.props.onChange}
label={this.props.label}
value={this.props.value || "Replace this text"}
placeholder={this.props.placeholder}
/>
</View>
)
this.props.style
是:
{
color: "orange", // This does not work
backgroundColor: "transparent" // This works
},
答案 0 :(得分:1)
找到了解决方案。但是对于那些处于同样困境中的人:
由于某些原因,即使color
之类的style
道具也不被认为是backgroundColor
道具。
只需将theme
作为对TextInput
的支持。在该theme
对象中分配文本颜色,如下所示:
<TextInput
type="outlined"
style={{ ...styles.textInput, ...this.props.style }}
underlineColor={this.theme.colors.primary}
onChangeText={this.props.onChange}
label={this.props.label}
value={this.props.value || "Replace this text"}
placeholder={this.props.placeholder}
theme={{ colors: { text: this.props.style.color } }}
/>
答案 1 :(得分:0)
theme={{
colors: {
placeholder: 'white', text: 'white', primary: 'white',
underlineColor: 'transparent', background: '#003489'
}
}}