React 18 引入了一种手动渲染组件的新方法,现在无需调用
import ReactDOM from 'react-dom';
ReactDOM.render(component, container)
Run Code Online (Sandbox Code Playgroud)
必须打电话
import { createRoot } from 'react-dom/client';
createRoot(container).render(component);
Run Code Online (Sandbox Code Playgroud)
如果不这样做,则会向控制台发出警告并恢复到 React 17 API 兼容性。
发布到 NPM 的组件是否有官方的或至少是半干净的方式来支持这两个 API?
有一个React.version我可以检查一下。
然而createRoot,在一个单独的文件中,这意味着我正在查看条件导入,这肯定会成为各种捆绑器和转译器问题的根源。
还有更好的想法吗?
注意:有问题的组件是https://www.npmjs.com/package/rlayers,其中包含一个虚拟组件(地图样式)和一个render()属性,可以在屏幕外渲染以计算地图样式。任何允许我在为上下文提供值的同时调用所有嵌套render()方法的答案也是有效的。
我有以下代码:
struct context {
int a, b;
};
int fn(struct context *c) {
// create local aliases
int &a = c->a;
int &b = c->b;
// use as if these were local variables
return a+b;
}
Run Code Online (Sandbox Code Playgroud)
是否可以自动创建fn允许访问a和b不访问的变量别名c->:
int fn(struct context *c) {
// magic line that is not dependent on the list of the members
return a+b;
}
Run Code Online (Sandbox Code Playgroud)
允许我自动执行此操作而无需列出所有变量的东西。
我需要这个 C++ 代码生成器 (SWIG),它可以让我大大简化模板。