gpt4 book ai didi

javascript - 无法读取react-native上下文api中未定义的属性 'state'?

转载 作者:行者123 更新时间:2023-12-01 01:40:19 25 4
gpt4 key购买 nike

我正在尝试在我的 ract-native 应用程序中关联 api。但我收到这个错误。TypeError:TypeError:无法读取未定义的属性“number”。我的代码出了什么问题?

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>

最佳答案

这是因为您没有在应用程序中的任何位置使用 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;

关于javascript - 无法读取react-native上下文api中未定义的属性 'state'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52481590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com