Не удается прочитать свойство 'состояние' из неопределенного в реагирующем нативном контексте API? - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь настроить api в моем приложении на ract-native.Но я получаю эту ошибку. TypeError: TypeError: Невозможно прочитать свойство 'число' из неопределенного. Что не так в моем коде?

appContext.js

import React from 'react';

export const AppContext = React.createContext();

class AppProvider extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            number: 10,
        };
    }

    render() {
        return 
        (
            <AppContext.Provider value={this.state}>
                {this.props.children}
            </AppContext.Provider>
        )
    }
}

export default AppProvider;

homeScreen.js

import { AppContext } from './appContext';
<AppContext.Consumer>
    {(context) => context.number}
</AppContext.Consumer>

1 Ответ

0 голосов
/ 24 сентября 2018

Это потому, что вы не используете свой компонент AppProvider в своем приложении.Попробуйте вот так:

const AppContext = React.createContext();

class AppProvider extends React.Component {
  constructor( props ) {
    super( props );
    this.state = {
      number: 10,
    };
  }

  render() {
    return (
      <AppContext.Provider value={this.state}>
        {this.props.children}
      </AppContext.Provider>
    );
  }
}

class App extends React.Component {
  render() {
    return (
      <AppProvider>
        <AppContext.Consumer>
          {context => context.number}
        </AppContext.Consumer>
      </AppProvider>
    );
  }
}

AppProvider - это просто стандартный компонент.Он отображает контекст Provider и получает детей.Итак, вы должны использовать этот компонент AppProvider где-то в вашем приложении и передать ребенку Consumer.

Если вы хотите сохранить свой контекст в отдельном файле, он будет выглядеть так:

Контекст и компонент поставщика

import React from "react";

export const AppContext = React.createContext();

class AppProvider extends React.Component {
  constructor( props ) {
    super( props );
    this.state = {
      number: 1745,
    };
  }

  render() {
    return (
      <AppContext.Provider value={this.state}>
        {this.props.children}
      </AppContext.Provider>
    );
  }
}

export default AppProvider;

Основной компонент

import React from "react";
import AppProvider, { AppContext } from "./AppProvider";

class App extends React.Component {
  render() {
    return (
      <AppProvider>
        <AppContext.Consumer>
          {context => context.number}
        </AppContext.Consumer>
      </AppProvider>
    );
  }
}

export default App;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...