我想在按下按钮时更改整个应用程序的样式。我以为我可以用reducer
来做到这一点。因此,我创建:更改样式onPress + Redux
ReducerStyles:
const initialState =
{
name: styleNormal,
path: './styles/styleNormal'
}
export default function reducer01 (state = initialState, action) {
switch (action.type) {
case "changeStyleNormal":
return [
...state,
{
name: name: action.payload,
path: './styles/styleNormal'
}
];
case "changeStyleNew":
return [
...state,
{
name: name: action.payload,
path: './styles/styleNew'
}
];
default:
return state
}
}
和行动:
const CHANGE_STYLE_NORMAL = 'changeStyleNormal';
const CHANGE_STYLE_NEW = 'changeStyleNew';
export function changeStyleNormal(style){
return {
type: CHANGE_STYLE_NORMAL,
payload: style
}
}
export function changeStyleNew(style){
return {
type: CHANGE_STYLE_NEW,
payload: style
}
}
我创建了2款在styles
文件夹,以便只有1可以根据一个选择的应用/从返回减速器。默认情况下,我在Reducer initialState
中有styleNormal
。进口的操作,减速组合后mapStateToProps
:
function mapStateToProps(state) {
return {
style: state.style
}
}
function mapDispatchToProps(dispatch) {
return {
changeStyleNormal: (style) => {
dispatch(changeStyleNormal(style));
},
changeStyleNew: (style) => {
dispatch(changeStyleNew(style));
}
}
}
新增2个按钮:
<TouchableOpacity
style={styles.clickMe}
onPress={()=>this.props.changeStyleNew('styleNew')}>
<Text style={styles.black18}>New Style</Text>
</TouchableOpacity>
<TouchableOpacity
style={styles.clickMe}
onPress={()=>this.props.changeStyleNormal('styleNormal')}>
<Text style={styles.black18}>Normal Style</Text>
</TouchableOpacity>
现在,当组件被调用时,
render() {
console.log("style: ",this.props.style);
这给了风格:
我无法在render()
之外访问this.props.style
,因此我会在哪里设置变量style = this.props.style.path
?
而且,当我点击任何按钮,动作都很好,但款式越来越附加到减速机:
我只想要一个传递是在减速。所以我可以用它来设置风格。
这是正确的方法吗?请帮忙。
非常感谢。
更新1:
class Ext2 extends Component {
//console.log('Style:', this.props.people); // <= This throws an internal server error 500
// const styles = this.props.style.path; // same error as above
render() {
console.log("style: ",this.props.style); //<= Works
console.log("stylePath: ",this.props.style.path) //<= Works
可能不相关,但你的初始状态是一个对象,但你从还原器返回一个数组。 –