[英]How to use another <Consumer> in a <Provider>?
./App.js
import React from "react";
import ReactDOM from "react-dom";
import { Provider } from './context.js';
import { Provider as Provider2 } from './context2.js';
import Child from './Child.js';
import "./styles.css";
class App extends React.Component {
render () {
return (
<Provider number={1}>
<Provider2 number2={2}>
<Child/>
</Provider2>
</Provider>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
./Child.js
import React from 'react';
import { Consumer } from './context.js';
class Child extends React.Component {
render() {
return (
<Consumer>
{(value) => (
<div>{value.number}</div>
)}
</Consumer>
);
}
}
export default Child;
./context.js
import React, { createContext } from 'react';
import { Consumer as Consumer2 } from './context2.js';
const Context = createContext(undefined),
Consumer = Context.Consumer;
class Provider extends React.Component {
render () {
return (
<Consumer2>
{(value) => (
<Context.Provider value={{ number:(this.props.number + value.number2) }}>
{this.props.children}
</Context.Provider>
)}
</Consumer2>
);
}
}
export { Consumer, Provider };
./context2.js
import React, { createContext } from 'react';
const Context = createContext(undefined),
Consumer = Context.Consumer;
class Provider extends React.Component {
render () {
return (
<Context.Provider value={{ number2:this.props.number2 }}>
{this.props.children}
</Context.Provider>
);
}
}
export { Consumer, Provider };
您好,如您所見context.js ,我在Provider中使用了Consumer2 。 但是我得到的錯誤值是不確定的 。
當我將Provider2放入Provider時 ,它運行良好。
但是我想從服務器設置一個值,所以我必須在App.js中使用Provider2 。
您可以在https://codesandbox.io/s/py5jrj8n07上進行測試。
有什么好主意嗎? 謝謝閱讀 :)
Provider
嘗試使用Provider2
的值。 在index.js(App)文件中,您必須切換提供程序的位置,以使它們能夠以正確的順序使用。 Provider2
不會從Provider
消費,因此這應該起作用:
<Provider2 number2={2}>
<Provider number={1}>
<Child />
</Provider>
</Provider2>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.