旧版 React 捆绑的组件是否与其未来版本兼容?

pun*_*bit 6 javascript reactjs

我有一个组件库包*,它使用 styleguidist 和其他自定义功能,使我能够在不同的应用程序中重复使用某些演示/哑组件。

它们经过构建、测试、导入并在成功使用 React v16 的不同项目中使用。

最近尝试将该包包含在 React v15 项目中,但失败了;没有错误,但 DOM 出现“ <undefined></undefined>”:

import { Foobar } from '@privatePackage/packageFoobar'

<Foobar /> 
Run Code Online (Sandbox Code Playgroud)

呈现:

<undefined></undefined>
Run Code Online (Sandbox Code Playgroud)

理想情况下,我会将遗留项目更新为最新版本的 React,并在原始源中设置peerDependency,以防止将 React 捆绑在包*中进行分发。另外,在 devDependency 中包含“React”以进行开发。

"peerDependencies": {      
    "react": ">=16.x",
    ...
},
 "devDependencies": {      
    "react": ">=16.x",      
    ...
}
Run Code Online (Sandbox Code Playgroud)

那么,与旧版本 React 捆绑的组件与未来版本不兼容的想法是否正确?或者将 React 捆绑在分发文件中是这行不通的原因吗?我知道捆绑“React”并不是一个好的做法,而是应该将其作为peerDependency,但对于遗留项目来说,现在最好不要更新React,因为与项目中大多数包相关的API更改等。

更新

如上所述,即使单独捆绑,尝试相互使用不同的 React 版本也不是一个好习惯,在上面的情况下,组件是从使用最新 React 版本的项目导入的,然后导入到旧版本中。它失败了,而且应该失败。

为了解决这个问题,遗留项目包需要单独更新并解决任何API更改等问题。之后,较低级别的包(组件库*)应该在peerDependency和开发中都具有react依赖项。