【发布时间】:2020-04-02 02:37:56
【问题描述】:
我正在制作一个 React-Native 应用程序,其中我有一个来自 React Navigation 的导航器,并且我还想实现 Redux。我正在尝试创建一个基于参数更新的全局计数器。 以下是操作:
export const setFlags = (value) => {
return {
type: 'SETFLAGS',
value
}
}
export const setNonFlags = (value) => {
return {
type: 'SETNONFLAGS',
value
}
}
这里是 reducer,因为它有两个功能相同的东西,我认为一个可以工作(我是 Redux 的新手):
const initialState = {
flags:0,
nonFlags:0,
}
const AllFlagReducer = (state = initialState, action) =>{
switch(action.type){
case 'SETFLAGS':
return state.flags = state.flags + action.value
case 'SETNONFLAGS':
return state.nonFlags = state.nonFlags + action.value
}
return state
}
export default AllFlagReducer
这是我想将“flag”和“nonFlag”的本地状态发送到 redux 全局状态的按钮。之后我重置本地状态并移动到下一个屏幕。
<TouchableOpacity style={styles.resetButton}
onPress= {
// dispatch something like flags(in redux):this.state.flags
// dispatch nonFlags(in redux): this.state.nonFlags
() =>{this.resetAll();
navigation.navigate('Specific Scams')
}}>
我们将不胜感激。 更新 1: 整个组件:
class ScamTree extends React.Component {
constructor(props){
super(props)
this.state = {
flags : 0,
nonFlags: 0,
qAnswered:0
}
}
可能重要的功能:
resetAll = () =>{
this.setState({flags:0})
this.setState({nonFlags:0})
this.setState({qAnswered:0})
}
按钮,(我没有为按钮制作单独的组件):
<TouchableOpacity style={styles.resetButton}
onPress= {
// dispatch something like flags:this.state.flags
// dispatch nonFlags: this.state.nonFlags
() =>{this.resetAll();store.dispatch({type:"SETFLAGS",value:5})
navigation.navigate('Specific Scams')
}}>
<Text style={{paddingHorizontal:40}}>NEXT</Text>
</TouchableOpacity>
使 React Navigation 工作的导出:
export default function(props) {
const navigation = useNavigation();
return <ScamTree {...props} navigation={navigation} />;
}
【问题讨论】:
-
那么您需要什么帮助?你有动作,reducer...假设你已经配置了你的 redux 存储和提供者,你现在只需要连接组件并使用值调度动作。
-
如果所有这些都是正确的,你介意展示如何创建一个组件来完成这个吗?我尝试了“useDispatch”并编写了一个单独的功能组件,但由于这是一个类组件,它没有工作。
-
介意分享
TouchableOpacity的整个组件代码吗?然后很简单地展示如何使用connectHOC 将其连接到您的商店。 -
@DrewReese 我更新了帖子以显示类、函数、touchableOpacity 和导出,但我没有为按钮制作单独的组件,因为它在类中使用了一些本地状态。谢谢
标签: reactjs react-native redux react-navigation