React Native useContex
Oct 23 2020
import React from 'react';
export function useAuth() {
const [name, setName] = React.useState('Sa');
return {name, setName};
}
import {createContext} from 'react';
export const UserContext = createContext();
import React from 'react';
import {useAuth} from './userHook';
import {UserContext} from './userContext';
import Pagesd from './pagesd';
export default function () {
const {name} = useAuth();
return (
<UserContext.Provider value={name}>
<Pagesd />
</UserContext.Provider>
);
}
import React from 'react';
import {View, Text} from 'react-native';
import {UserContext} from './userContext';
function Pagesd() {
const {name} = React.useContext(UserContext);
return (
<View>
<Text>{name}</Text>
</View>
);
}
export default Pagesd;
Eu esperava que a função useAuth visse Sa Pagesd () digitada onde estou fazendo errado
Quero fazer o gerenciamento de caso, mas o nome vem no app js, mas não consigo acessar os filhos.
Respostas
evolutionxbox Oct 23 2020 at 01:57
O código mostrado até agora está correto, com uma exceção.
const {name} = React.useContext(UserContext);
O valor nameestá sendo desestruturado a partir do retorno de useContext. Isso é bom se o valor fornecido for um objeto, mas presumo que não seja.
<UserContext.Provider value={name}>
Se namenão for um objeto, mas uma string, a desestruturação não funcionará e namefuncionará undefined.
Para resolver isso, você tem duas opções:
- Não desestruture o
namevalor
const name = React.useContent(UserContext);
- Passe ao provedor um objeto
<UserContext.Provider value={{name}}>
React usa chaves {} para denotar uma expressão JavaScript , enquanto as chaves internas são uma forma abreviada de valor de propriedade literal do objeto .
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?