我在React中使用Webpack的代码拆分功能.我正在构建一个应用程序,用户将选择一个选项,相应的React组件将呈现.但是,我发现使用CommonJs require.ensure仅适用于硬编码字符串.当我使用变量时,似乎它正在工作,组件切换出来.但是,当我查看网络选项卡时,我发现它没有拆分代码 - 它不会加载任何新的包.当我硬编码时,每次都有一个新的捆绑呼叫.
这是什么工作:
executeDynamic(component){
var that = this;
switch(component){
case 'SolidButton':
require.ensure([], function(require){
DynamicModule = require(`./elements/SolidButton/index.js`);
that.forceUpdate();
});
break;
case 'ThreeDButton':
require.ensure([], function(require){
DynamicModule = require(`./elements/ThreeDButton/index.js`);
that.forceUpdate();
});
break;
case 'NoPreview':
require.ensure([], function(require){
DynamicModule = require(`./elements/NoPreview/index.js`);
that.forceUpdate();
});
break;
default:
break;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我想要的工作:
executeDynamic(component){
var that = this;
require.ensure([], function(require) {
DynamicModule = require(`./elements/${component}/index.js`);
that.forceUpdate();
});
}
Run Code Online (Sandbox Code Playgroud) 我只是设置Detox并且用户错误是可能的......据说,我认为我做得对.我有一个TextInput元素,accessibilityLabel和testID都设置为电子邮件.但是,排毒无法找到带有by.id或by.label的UI元素.奇怪的是,我可以在xcode的视图层次结构中找到我的标识符.我不确定从哪里开始?我附上了视图层次结构的屏幕截图.
排毒,节点,设备,Xcode和macOS版本
排毒测试 正如您所看到的,我正在尝试使用by.label和by.id. 我的测试是:
describe('Boot and sign in', () => {
beforeEach(async () => {
await device.reloadReactNative();
});
it('should have welcome screen', async () => {
await expect(element(by.label('Login'))).toBeVisible();
});
it('should show login screen after tap', async () => {
await element(by.label('Login')).tap();
await expect(element(by.label('login-signin'))).toBeVisible();
});
it('should sign in and land on the homepage', async () => {
await element(by.label('email')).typeText('qa@integrationtest.com');
await element(by.label('password')).typeText('aaaaaa');
await element(by.label('Sign in button')).tap();
await expect(element(by.label('HOME'))).toBeVisible();
});
it('should sign in and land …Run Code Online (Sandbox Code Playgroud)