Используйте connect
для подключения компонента к состоянию с mapStateToProps
.
Redux заявляет, что вы 'map-to-props' будут доступны через реквизиты подключенных компонентов
Чтобы обновить состояние приведения к избыточности, используйте создателей действий, которые также передаются в реквизиты компонентов через второй аргументconnect
Теперь вы можете преобразовать Settings
в функциональный компонент:
import * as React from 'react';
import {connect} from 'react-redux';
import { Text, View } from 'react-native';
export default Settings = (props) => {
const { value } = props;
return (
<View>
<Text>
This is the settings screen. I want to render a value from the state here: { value }
</Text>
</View>
);
}
const mapStateToProps(state){
return {
value: state.value
}
}
export default connect(mapStateToProps)(Settings)
Вам понадобится редуктор:
export default const reducer = (state = '', action) => {
switch (action.type) {
case 'UPDATE_VALUE' :
return action.payload
case 'REMOVE_VALUE' :
return ''
default:
return state
}
}
Вам также понадобитсяа также некоторые создатели действий:
export const updateValue = (newValue) = {
return {type: 'UPDATE_VALUE', payload:newValue}
}
export const removeValue = (newValue) = {
return {type: 'REMOVE_VALUE'}
}
Затем можно использовать этих создателей действий для обновления состояния:
import React from "react";
import { connect } from "react-redux";
import { Button } from 'react-native-paper';
import { updateValue , removeValue } from './actions'
const SomeComponent = props => {
return(
<div>
<Button onPress={()=>props.updateValue(‘newValue’)}>Update</button>
<Button onPress={()=>props.removeValue()}>Remove</button>
</div>
)
}
//set mapStateToProps arg to null if you do not need state
export default connect(null , {updateValue , removeValue})(SomeComponent);