如何强制更新React.memo子组件?

阿什什

我的主要功能组件在子组件上执行了大量的useQueries和useMutations,因此我将其设置为React.memo,以免在每次更新时导致重新呈现。基本上,在选择新产品,我还是看到了老产品,因为备忘录。

mainFunction.js

const [active, setActive] = useState(false);
const handleToggle = () => setActive(false);

const handleSelection = (resources) => {
        const idsFromResources = resources.selection.map((product) => product.variants.map(variant => variant.id));
        store.set('bulk-ids', idsFromResources); //loal storage js-store library
        handleToggle
    };
    
const emptyState = !store.get('bulk-ids'); // Checks local storage using js-store library
    
return (
    <Page>
        <TitleBar
            title="Products"
            primaryAction={{
                content: 'Select products',
                onAction: () => {
                    setActive(!active)
                }
            }}
        />
        <ResourcePicker
            resourceType="Product"
            showVariants={true}
            open={active}
            onSelection={(resources) => handleSelection(resources)}
            onCancel={handleToggle}
        />
        <Button >Add Discount to Products</Button> //Apollo useMutation

        {emptyState ? (
            <Layout>
                Select products to continue
            </Layout>
        ) : (
                <ChildComponent />
            )}
    </Page>
    );
    
    

ChildComponent.js

class ChildComponent extends React {
    return(
        store.get(bulk-ids).map((product)=>{
            <Query query={GET_VARIANTS} variables={{ id: variant }}>
                {({ data, extensions, loading, error }) => {
                    <Layout>
                        // Query result UI
                    <Layout>
                }}
            </Query>
        })
    )
}
export deafult React.memo(ChildComponent);
    
肯·贝科夫

React.memo()当您的组件始终以相同的方式呈现不变时,此功能很有用。对于您的情况,您需要在<ChildComponent>每次bulk-id更改时重新渲染所以你应该使用useMemo()钩子。

function parentComponent() {
 
    ... rest of code

    const bulkIds = store.get('bulk-ids');
    const childComponentMemo = useMemo(() => <ChildComponent ids={bulkIds}/>, [bulkIds]); 

    return <Page>
        
        ... rest of render
        
        {bulkIds ? 
            childComponentMemo
        :(
            <Layout>
                Select products to continue
            </Layout>
        )}        
    </Page>
    
}

useMemo()返回相同的值,直到buldIds未更改为止有关useMemo()您的更多详细信息,参见此处

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

React:如何在功能组件中强制状态更新?

来自分类Dev

在异步功能后强制 React 组件更新?

来自分类Dev

React Memo重置组件状态中的值

来自分类Dev

如何在React代码中强制更新组件以将深色主题切换为浅色主题

来自分类Dev

如何更新子组件的道具?

来自分类Dev

React.js:更新动态子组件如何工作?

来自分类Dev

React.js:更新动态子组件如何工作?

来自分类Dev

如何正确更新子组件 React.js

来自分类Dev

在Vuex更新后强制道具在子组件中更新

来自分类Dev

如何强制 React 组件重新渲染?

来自分类Dev

当父组件的状态更新时,React 子组件不会更新

来自分类Dev

React / Memo:用React.memo包装所有功能组件

来自分类Dev

子组件未在 React 中更新

来自分类Dev

将儿童道具传递给React Memo组件

来自分类Dev

功能组件随着 useMemo / React.memo 消失

来自分类Dev

React - 如何更新子组件的父组件 onclick 中的状态 - 我做错了什么?

来自分类Dev

在React Native中通过子组件更新父组件

来自分类Dev

使用react挂钩从父组件更新子组件的状态

来自分类Dev

React:使用异步数据更新父组件的子组件状态

来自分类Dev

如何更新子组件中的更改

来自分类Dev

在React.memo中使用React功能组件时如何解决闭包问题?

来自分类Dev

Laravel Livewire-如何强制子组件刷新

来自分类Dev

如何设置子组件的子组件的父组件状态

来自分类Dev

如何从angular2中的子组件更新父组件

来自分类Dev

当父组件中的表单提交时,如何使子组件更新

来自分类Dev

从父组件角度更新子组件输入

来自分类Dev

子组件使用 onChange(),更新父组件

来自分类Dev

如何从React Redux的子组件中分派?

来自分类Dev

如何删除特定的子React组件?

Related 相关文章

  1. 1

    React:如何在功能组件中强制状态更新?

  2. 2

    在异步功能后强制 React 组件更新?

  3. 3

    React Memo重置组件状态中的值

  4. 4

    如何在React代码中强制更新组件以将深色主题切换为浅色主题

  5. 5

    如何更新子组件的道具?

  6. 6

    React.js:更新动态子组件如何工作?

  7. 7

    React.js:更新动态子组件如何工作?

  8. 8

    如何正确更新子组件 React.js

  9. 9

    在Vuex更新后强制道具在子组件中更新

  10. 10

    如何强制 React 组件重新渲染?

  11. 11

    当父组件的状态更新时,React 子组件不会更新

  12. 12

    React / Memo:用React.memo包装所有功能组件

  13. 13

    子组件未在 React 中更新

  14. 14

    将儿童道具传递给React Memo组件

  15. 15

    功能组件随着 useMemo / React.memo 消失

  16. 16

    React - 如何更新子组件的父组件 onclick 中的状态 - 我做错了什么?

  17. 17

    在React Native中通过子组件更新父组件

  18. 18

    使用react挂钩从父组件更新子组件的状态

  19. 19

    React:使用异步数据更新父组件的子组件状态

  20. 20

    如何更新子组件中的更改

  21. 21

    在React.memo中使用React功能组件时如何解决闭包问题?

  22. 22

    Laravel Livewire-如何强制子组件刷新

  23. 23

    如何设置子组件的子组件的父组件状态

  24. 24

    如何从angular2中的子组件更新父组件

  25. 25

    当父组件中的表单提交时,如何使子组件更新

  26. 26

    从父组件角度更新子组件输入

  27. 27

    子组件使用 onChange(),更新父组件

  28. 28

    如何从React Redux的子组件中分派?

  29. 29

    如何删除特定的子React组件?

热门标签

归档