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;

UseAuth işlevinin, yanlış yaptığım yerde Sa Pagesd () yazdığını görmesini bekliyordum

Vaka yönetimini yapmak istiyorum, ancak adı app js'de geliyor, ancak çocuklara erişemiyorum.

Yanıtlar

evolutionxbox Oct 23 2020 at 01:57

Şimdiye kadar gösterilen kod, bir istisna dışında doğrudur.

const {name} = React.useContext(UserContext);

Değerin namedönüşünden yıkılıyor useContext. Verilen değer bir nesne ise bu sorun değil, ama ben öyle olmadığını varsayıyorum.

<UserContext.Provider value={name}>

Eğer namebir nesne değil, ama bir dize, o zaman destructure çalışmaz ve nameolacaktır undefined.

Bunu çözmek için iki seçeneğiniz var:

  1. nameDeğeri yok etmeyin
const name = React.useContent(UserContext);
  1. Sağlayıcıya bir nesne iletin
<UserContext.Provider value={{name}}>

React, {} bir JavaScript ifadesini belirtmek için küme parantezleri kullanır , oysa içteki küme parantezleri bir nesne değişmez özellik değeri kısaltmasıdır .