TypeError: Cannot read property 'bugs' of undefined
.
但是当我把它们放在一起时(如图所示
tutorial
索引.js
文件
import { StoreProvider } from "./StoreProvider";
import BugsList from "./BugsList";
ReactDOM.render(
<React.StrictMode>
<Router>
<StoreProvider>
<BugsList />
</StoreProvider>
</Router>
</React.StrictMode>,
document.getElementById("root")
);
BugsList.js
import React from "react";
import { useLocalStore, useObserver } from "mobx-react";
import { StoreProvider } from "./StoreProvider";
const StoreContext = React.createContext();
const BugsList = () => {
const store = React.useContext(StoreContext);
console.log(store.bugs); // I get error Cannot read property 'bugs' of undefined
return useObserver(() => (
<>
<h1>{store.bugsCount} Bugs!</h1>
<p>{store.bugs}</p>
</>
));
};
存储提供者.js
import React from "react";
import { useLocalStore, useObserver } from "mobx-react";
const StoreContext = React.createContext();
export const StoreProvider = ({ children }) => {
const store = useLocalStore(() => ({
bugs: ["Centipede"],
addBug: (bug) => {
store.bugs.push(bug);
},
get bugsCount() {
return store.bugs.length;
}
}));
return (
<StoreContext.Provider value={store}>{children}</StoreContext.Provider>
);
};
然而,当我把它们放在一个文件中时,它就起作用了。
import React from "react";
import { useLocalStore, useObserver } from "mobx-react";
const StoreContext = React.createContext();
const StoreProvider = ({ children }) => {
const store = useLocalStore(() => ({
bugs: ["Centipede"],
addBug: (bug) => {
store.bugs.push(bug);
},
get bugsCount() {
return store.bugs.length;
}
}));
return (
<StoreContext.Provider value={store}>{children}</StoreContext.Provider>
);
};
const BugsList = () => {
const store = React.useContext(StoreContext);
console.log(store.bugs); // This prints the bugs list
return useObserver(() => (
<>
<h1>{store.bugsCount} Bugs!</h1>
<p>{store.bugs}</p>
</>
));
};
const MobxTest = () => {
return (
<StoreProvider>
<BugsList />
</StoreProvider>
);
};
export default MobxTest;