场景
尝试使用Jest(和Enzyme)测试一个简单的React组件.这个组件使用react-dropzone
,我想测试一些涉及DOM的操作,所以我使用jsdom(已经配置create-react-app
)
问题
document
在我的测试代码中可用但在组件内部可用的对象undefined
位于dropzone onDrop
回调内部,这会阻止测试运行.
代码
MyDropzone
import React from 'react'
import Dropzone from 'react-dropzone'
const MyDropzone = () => {
const onDrop = ( files ) =>{
fileToBase64({file: files[0]})
.then(base64Url => {
return resizeBase64Img({base64Url})
})
.then( resizedURL => {
console.log(resizedURL.substr(0, 50))
})
}
return (
<div>
<Dropzone onDrop={onDrop}>
Some text
</Dropzone>
</div>
);
};
const fileToBase64 = ({file}) => {
return new Promise((resolve, reject) => {
const reader = new FileReader() …
Run Code Online (Sandbox Code Playgroud) 我想了解为什么当ng-repeat
在重复的项目上使用带有某个控制器时,该项目的父项和该项目的祖父是同一个控制器.我期待祖父成为父控制器的父母,而不是同一个控制器.
这里的代码澄清了这一点
HTML
<div ng-controller="MainController">
{{name}}
<div ng-controller="SecondController">
{{name}}
<ul>
<li ng-repeat="item in list" ng-controller="ItemController">
{{item.name}} {{$parent.name}} {{myDad}} {{myGrandpa}}
</li>
</ul>
<div ng-controller="ThirdController">
{{name}} {{$parent.name}} {{myDad}} {{myGrandpa}}
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
JS
angular.module('app', []);
angular.module('app')
.controller('MainController', function($scope) {
$scope.name = "MainController";
})
.controller('SecondController', function($scope) {
$scope.name = "SecondController";
$scope.list = [
{'name': 'aaa'}
];
})
.controller('ItemController', function($scope) {
$scope.name = "ItemController";
$scope.myDad = $scope.$parent.name;
$scope.myGrandpa = $scope.$parent.$parent.name;
})
.controller('ThirdController', function($scope) {
$scope.name = "ThirdController";
$scope.myDad = $scope.$parent.name;
$scope.myGrandpa = …
Run Code Online (Sandbox Code Playgroud) 我知道在最新的Webpack中,我们可以指定module.rules
选项enforce: 'pre'
以使某个加载程序按照docs中的指定以“ pre-loader”的身份运行。
但是我找不到关于预加载器和后加载器含义的适当解释。当然,我们当然可以从逻辑上认为“ pre”先于“ post”运行,但是我不知道确切发生了什么(为什么没有记录?)。
这也是考虑到已经有指定装载机为了看财产的方式Rule.use
在该文档它说Loaders can be chained by passing multiple loaders, which will be applied from right to left (last to first configured)
所以两个相关的问题:
PS 1:我知道在SO上也有类似的问题,但是我发现没有一个问题链接到一份文档,该文档实际上详细解释了加载顺序
PS 2:一个简短的场景说明为什么这对我来说很重要,是我运行打字稿,tslint和babel,我想了解正确的链接过程以及各个步骤中实际发生的情况
我的控制器中有这些线
$scope.VLANEnabledServers = {};
$scope.myEmpty = {};
console.log(angular.equals($scope.myEmpty, $scope.VLANEnabledServers));
Run Code Online (Sandbox Code Playgroud)
这ng-show
在模板中
<table ng-show="!angular.equals(myEmpty, VLANEnabledServers)" ng-cloak class="table table-striped table-bordered ng-hide">
Run Code Online (Sandbox Code Playgroud)
angular.equals
控制器中的功能打印TRUE
正确.但在视图中,在条件ng-show
应!TRUE
的table
是反正显示
难道我做错了什么 ?
根据flexbox规范,应该将span flex项(flex容器的子项)转换为display:block
.Internet Explorer 10不应用此转换,因此flexbox不适用于span(内联)元素.
这里codepen的我是什么意思
我可以使用div但我想知道这是否是一个资源管理器错误,如果有一个更好的解决方案,而不是更改HTML代码.