首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mobx-react钩外渲染

mobx-react钩外渲染
EN

Stack Overflow用户
提问于 2020-08-17 17:25:03
回答 1查看 2.8K关注 0票数 1

我看到了类似于这样的useObserver钩子的例子:

代码语言:javascript
复制
const Test = () => {

  const store = useContext(storeContext); 

  return useObserver(() => (
    <div> 
      <div>{store.num}</div>
    </div>
  ))

}

但是下面的内容也有效,我想知道是否有任何理由不使用useObserver来返回将用于呈现中的值,而不是返回呈现。

代码语言:javascript
复制
const Test = () => {

  const store = useContext(storeContext); 

  var num = useObserver(function (){
    return store.num;
  });

  return (
    <div> 
      <div>{num}</div>
    </div>
  )

}

而且,在同一个组件中使用useObserver两次不会出现任何错误。这样的事有什么问题吗?

代码语言:javascript
复制
const Test = () => {

  const store = useContext(storeContext); 

  var num = useObserver(function (){
    return store.num;
  });

  return useObserver(() => (
    <div> 
      <div>{num}</div>
      <div>{store.num2}</div>
    </div>
  ))

}
EN

回答 1

Stack Overflow用户

发布于 2020-08-17 17:33:02

可以在组件中使用观察者方法。用你想要的任何商店。

代码语言:javascript
复制
import { observer } from "mobx-react-lite";
import { useStore } from "../../stores/StoreContext";

    
    const Test = observer(() => {

          const { myStore } = useStore();
                
          return() => (
            <div> 
              <div>{myStore.num}</div>
              <div>{myStore.num2}</div>
            </div>
          )
        
        }
    );

StoreContext.ts

代码语言:javascript
复制
import myStore from './myStore'
export class RootStore{
        //Define your stores here. also import them in the imports
         myStore = newMyStore(this)
        }
    
    export const rootStore = new RootStore();
    
    const StoreContext = React.createContext(rootStore);
    
    export const useStore = () => React.useContext(StoreContext);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63455752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档