我正在开发一种开发工具,它可以让您创建Reaction组件.
用户一开始将使用如下所示的组件:
function MyComponent() {
var rand = useRef(Math.random());
return <div>{rand.current}</div>;
}
但随后可能需要对其进行如下修改:
function MyComponent() {
var rand = useRef(Math.random());
return <span>{rand.current}</span>;
}
这里唯一有意义的更改是<span>
,所以对我来说最理想的情况是(为了防止较大应用程序的完整树重新挂载/保留应用程序状态),随机数不会更改,因为引用将被保留-但Reaction在考虑其身份时似乎检测到引用组件定义的更改:MyComponent !== MyComponent (new)
并输出一个不同的随机值.
这类似于我自己实现HMR(热模块重新加载)-但被限制为仅响应组件定义.
下面是一个可以使用的工作示例:https://jsfiddle.net/83xruyL5/1/
有没有办法在定义中使用类似于name/id/key的属性来修改此react 行为?或者可能是一种更通用的JS方法,即在修改函数/组件引用的定义时保留/重用该引用?
我假设这可能是不可能的,我只是在这里受到React的限制,但我只是问以防万一.