刷新来自 index.js 的 webfont 加载回调的子组件
Refreshing child component on webfont load callback from index.js
问题:
不同的字体在包含该字体的元素上需要稍微不同的样式。该组件的样式是在 JS 中计算的。当 webfont 加载字体并在 DOM 中更改它时,我的组件没有被刷新。我想使用 Webfontloader 回调来强制重新加载此组件。 Webfont 配置在顶层指定 - index.js(在 App.js 之上):
// webfontloader configuration object. *REQUIRED*.
const config = {
google: {
families: ['Roboto:500']
},
custom: {
families: ["Reef", "Roboto Slab"],
urls: fonts
}
};
const callback = status => {
console.log(status);
};
ReactDOM.render(
<BrowserRouter >
<WebfontLoader config = {config}
onStatus = {callback} >
<App / >
</WebfontLoader>
</BrowserRouter >,
document.getElementById("root")
);
我如何以优雅的方式刷新该元素(不通过所有父元素传递道具太深)?
谢谢!
正如@Hinrich 提到的,解决方案是 Context API。在 webfont 加载时,我正在更新 App 状态并通过 Provider 将其传递给所有消费者,以便强制组件(消费者)重新呈现。
问题:
不同的字体在包含该字体的元素上需要稍微不同的样式。该组件的样式是在 JS 中计算的。当 webfont 加载字体并在 DOM 中更改它时,我的组件没有被刷新。我想使用 Webfontloader 回调来强制重新加载此组件。 Webfont 配置在顶层指定 - index.js(在 App.js 之上):
// webfontloader configuration object. *REQUIRED*.
const config = {
google: {
families: ['Roboto:500']
},
custom: {
families: ["Reef", "Roboto Slab"],
urls: fonts
}
};
const callback = status => {
console.log(status);
};
ReactDOM.render(
<BrowserRouter >
<WebfontLoader config = {config}
onStatus = {callback} >
<App / >
</WebfontLoader>
</BrowserRouter >,
document.getElementById("root")
);
我如何以优雅的方式刷新该元素(不通过所有父元素传递道具太深)?
谢谢!
正如@Hinrich 提到的,解决方案是 Context API。在 webfont 加载时,我正在更新 App 状态并通过 Provider 将其传递给所有消费者,以便强制组件(消费者)重新呈现。