React Native - 消费者中的更新上下文仅在第一次工作
React Native - Update Context in Consumer only works first time
我正在尝试更新 Consumer 中按钮单击中的计数器之类的上下文,它是第一次工作(增量 +1),但是在第一次单击之后按钮似乎无法再次单击。
UserContext.js
import React from 'react'; import { createContext, useState } from "react";
export const UserContext = createContext();
const UserProvider = ({children}) => {
const [context, setContext] = useState({count : 1, update: () => {
setContext((context) => ({
count: context.count + 1
}));
}});
return(
<UserContext.Provider value={context}>
{children}
</UserContext.Provider>
);
}
export default UserProvider;
index.js
import React, {useEffect, useState, useContext } from 'react';
import {ScrollView, Text, View , Button, StyleSheet, ActivityIndicator} from 'react-native';
import {Colors} from 'react-native/Libraries/NewAppScreen';
import { UserContext } from '../userContext.js';
export default Home = ({navigation}) => {
return (
<View style={styles.body}>
<UserContext.Consumer>
{({count, update}) => (
<View>
<Button
onPress={update}
title="Counter">
</Button>
<Text>{count}</Text>
</View>
)}
</UserContext.Consumer>
</View>
);
};
如何定义和使用上下文
const UserProvider = ({children}) => {
const [context, setContext] = useState(1)
//create a update function that setContext
const update = () => {
setContext(prev => prev+1);
}
return(
<UserContext.Provider value={{ context, update }}>
{children}
</UserContext.Provider>
);
}
在你的index.js
export default Home = ({navigation}) => {
return (
{ /* wrap your app in the provider */}
<UserProvider>
<App />
</UserProvider>
);
};
//App Component
const App = () => {
const { context, update } = useContext(UserContext)
return (<View>
<Button onPress={update} title="Counter">Add Counter</Button>
<Text>{context}</Text>
</View>)
}
我正在尝试更新 Consumer 中按钮单击中的计数器之类的上下文,它是第一次工作(增量 +1),但是在第一次单击之后按钮似乎无法再次单击。
UserContext.js
import React from 'react'; import { createContext, useState } from "react";
export const UserContext = createContext();
const UserProvider = ({children}) => {
const [context, setContext] = useState({count : 1, update: () => {
setContext((context) => ({
count: context.count + 1
}));
}});
return(
<UserContext.Provider value={context}>
{children}
</UserContext.Provider>
);
}
export default UserProvider;
index.js
import React, {useEffect, useState, useContext } from 'react';
import {ScrollView, Text, View , Button, StyleSheet, ActivityIndicator} from 'react-native';
import {Colors} from 'react-native/Libraries/NewAppScreen';
import { UserContext } from '../userContext.js';
export default Home = ({navigation}) => {
return (
<View style={styles.body}>
<UserContext.Consumer>
{({count, update}) => (
<View>
<Button
onPress={update}
title="Counter">
</Button>
<Text>{count}</Text>
</View>
)}
</UserContext.Consumer>
</View>
);
};
如何定义和使用上下文
const UserProvider = ({children}) => {
const [context, setContext] = useState(1)
//create a update function that setContext
const update = () => {
setContext(prev => prev+1);
}
return(
<UserContext.Provider value={{ context, update }}>
{children}
</UserContext.Provider>
);
}
在你的index.js
export default Home = ({navigation}) => {
return (
{ /* wrap your app in the provider */}
<UserProvider>
<App />
</UserProvider>
);
};
//App Component
const App = () => {
const { context, update } = useContext(UserContext)
return (<View>
<Button onPress={update} title="Counter">Add Counter</Button>
<Text>{context}</Text>
</View>)
}