我已经构建了一个 ReactJS 组件库,用于使用 sim 链接通过 NPM 包安装的多个项目。我想使用上下文 API 将数据从组件库提供的父组件传递到我的基础项目,以便由组件库提供的多个使用者组件使用。当我尝试时,我的子组件中的上下文始终未定义。
如果我将我的消费者组件放在我的库中的提供者组件中,它就像一个冠军,但这会破坏我想要实现的目标。如果我将提供者和消费者都导出到我的基础项目,消费者将看不到提供者。
这是来自我的基础项目
import { Screen, COD, GenericSocketServer } from 'component-library'
export default class View extends React.PureComponent {
render() {
return (
<Screen className="screen odmb1">
<GenericSocketServer>
<COD />
</GenericSocketServer>
</Screen>
)
}
}
Run Code Online (Sandbox Code Playgroud)
这是从我的“组件库”导出的提供程序代码
import React from 'react';
import MyContext from "./context";
import COD from './../cod';
export default class GenericSocketServer extends React.Component {
render() {
return (
<MyContext.Provider value={{ foo: 'bar' }}>
<COD />
{this.props.children}
</MyContext.Provider>
);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我在“组件库”中使用的内容代码
import React …Run Code Online (Sandbox Code Playgroud) 我试图在Visual Studio 2010和Visual Studio 2012中都这样做.如果我的Gruntfile.js文件位于我的项目的根目录中,我可以从post build事件命令行运行"grunt"命令,它运行时没有问题.
grunt or grunt.cmd
Run Code Online (Sandbox Code Playgroud)
但如果它在子目录中
$(ProjectDir)Public\grunt or $(ProjectDir)Public\grunt.cmd
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误
The command "c:\web\Public\grunt.cmd" exited with code 9009.
Run Code Online (Sandbox Code Playgroud)
我一直在研究这个,但我找不到任何帮助.我确实在grunt文档中发现我需要使用"grunt.cmd"而不是仅仅调用"grunt",但这对我没什么帮助.
visual-studio-2010 post-build-event visual-studio-2012 gruntjs