Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🧐[问题 | question] 在app.tsx中如何主动触发 children主动重新渲染或者刷新,想让当前children里面的组件重新请求一次数据 #11071

Closed
taofeifanIT opened this issue Nov 30, 2023 · 5 comments

Comments

@taofeifanIT
Copy link

🧐 问题描述 | Problem description

在app.tsx中如何主动触发 children主动重新渲染或者刷新

💻 示例代码 | Sample code

childrenRender: (children) => { // if (initialState?.loading) return <PageLoading />; return ( <> {children} </> ); },

🚑 其他信息 | Other information

image

OS:

Node:

浏览器 | browser:

@KYX1234
Copy link

KYX1234 commented Nov 30, 2023

听说改变initailstate的值会自动重新渲染layout,你可以试试

@taofeifanIT
Copy link
Author

听说改变initailstate的值会自动重新渲染layout,你可以试试

打印了一下,确实会再进来,就是里面的组件为什么不会重新初始化请求数据呢
image
image

@taofeifanIT taofeifanIT changed the title 🧐[问题 | question] 在app.tsx中如何主动触发 children主动重新渲染或者刷新 🧐[问题 | question] 在app.tsx中如何主动触发 children主动重新渲染或者刷新,想让当前children里面的组件重新请求一次数据 Nov 30, 2023
@taofeifanIT
Copy link
Author

image

@KYX1234
Copy link

KYX1234 commented Nov 30, 2023

image

有个按钮控制loading状态,loading改变,渲染loading组件或者页面

@chenshuai2144
Copy link
Collaborator

在app.tsx中,要想主动触发子组件重新渲染或刷新,可以通过以下几种方式实现:

  1. 使用React的setState函数:在父组件中定义一个状态,并在需要重新渲染子组件的时候,调用setState函数来更新该状态。这将导致父组件重新渲染,进而触发子组件的重新渲染。

  2. 使用key属性:给子组件设置一个唯一的key属性,当key发生变化时,React会认为这是一个新的组件,会销毁旧组件并重新创建新的组件,从而触发子组件的重新渲染。

  3. 使用forceUpdate函数:在父组件中调用子组件的forceUpdate函数,强制子组件重新渲染。但是需要注意,React并不推荐使用forceUpdate函数,因为它会绕过组件的正常更新机制,可能会导致一些不可预知的问题。

根据你提供的示例代码,如果你想让子组件重新请求数据,可以使用上述方法中的任意一种,在父组件中触发相应的操作来重新渲染子组件。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants