我有一个反应应用程序,它使用 react-redux,useSelector 从商店获取数据。反应组件有
function PersonDataView() {
const name= useSelector(state => state.data.name)
const dob= useSelector(state => state.data.dob)
const dispatch = useDispatch()
const show= () => dispatch({type: 'SHOW'})
const remove= () => dispatch({type: 'REMOVE'})
return (
<div>
<h2>Person Details</h2>
<div>
<button onClick={show}>Show</button>
<span aria-label="name">{name}</span>
<span aria-label="dob">{dob}</span>
<button onClick={remove}>Remove</button>
</div>
</div>
)
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 react-testing-library 来测试这个组件。是否有任何 API 可以让我们更轻松地测试这些组件。我知道测试这些的两种方法:1)我可以使用 redux-mock-store 模拟商店,然后将此组件包装在提供程序组件下。2) 在 jest 中模拟 useSelector 方法
jest.mock('react-redux', () => ({
useSelector: () => ({
})
});
Run Code Online (Sandbox Code Playgroud)
但是使用 jest mock 的问题是在多个选择器的情况下,所有 useSelectors 将返回相同的模拟值。使用玩笑的方式, jest.fn().mockReturnValueOnce() 在我看来并不正确。
我有一个具有以下格式的对象
var obj = [{
"a": 1
}, {
"b": 2
}, {
"c": 3
}];
Run Code Online (Sandbox Code Playgroud)
只想将此对象数组内的每个对象中的键提取到新数组中
像这样的东西:
["a","b","c"]
已尝试以下方法但不起作用:
var obj = [{
"a": 1
}, {
"b": 2
}, {
"c": 3
}];
Run Code Online (Sandbox Code Playgroud)
我正在尝试将a 中某些文本的基线div对齐到所说的最底部边缘div(这样字符 likeg和j实际上会溢出 div)
我似乎只能将文本元素的底部边缘与div. 我尝试在内部和外部元素上使用vertical-align值baseline和,但没有成功。bottom
div {
height: 80px;
width: 300px;
background: #ff5;
position: relative;
}
span {
font-size: 30px;
position: absolute;
left: 0;
bottom: 0;
}Run Code Online (Sandbox Code Playgroud)
<div>
<span>
TEST gjp ABC
</span>
</div>Run Code Online (Sandbox Code Playgroud)
我还希望能够将基线从 div 底部偏移bottom: 10px;(例如,将文本的基线放置在距 div 底部边缘10px的位置)。
编辑:我还应该提到我想保留元素position: absolute;上的属性span,因为我想在父级中自由定位多个属性div.
例如,在这里,A的基线应位于 div 的下边缘,B的基线应位于其上方10px , C的基线应位于其上方 …
我在包上看到了这段代码:
const SortableList = SortableContainer(({items}) => {
return (
<ul>
{items.map((value, index) =>
<SortableItem key={`item-${index}`} index={index} value={value} />
)}
</ul>
);
});
Run Code Online (Sandbox Code Playgroud)
items通过在函数参数中将花括号括起来会发生什么?
我发现自己经常使用以下模式
var line = "12|John Doe"
var pieces = line.split("|")
var user = {
id : pieces[0],
name : pieces[1]
}
console.log(user)
Run Code Online (Sandbox Code Playgroud)
你会如何使用下划线使这更简洁和优雅?
我正在尝试找出,如何找出多个键值的对象过滤器数组。与SQL类似-WHERE KEY in(val1,val2)lodash javascript library
话虽如此,下面的例子:
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false },
{ 'user': 'Avding', 'age': 34, 'active': true }
];
_.filter(...)
Run Code Online (Sandbox Code Playgroud)
如何找到年龄在(34,36)岁的用户? 数字也可以改变运行时间
我需要在以下对象中创建所有键(不是值)的数组,其中键以_下划线开头...
在以下代码段中,我尝试getSubscriptions()返回["_foo1", "_foo2"]
let myObj = {
foo0: 'test',
_foo1: 'test',
_foo2: 'test',
foo3: 'test',
};
function getSubscriptions(obj, cb) {
// should return ["_foo1", "_foo2"]
let ret = ["foo1", "_foo2"];
return cb(ret);
}
getSubscriptions(myObj, (ret) => {
if (match(ret, ["_foo1", "_foo2"]) ) {
$('.nope').hide();
return $('.works').show();
}
$('.nope').show();
$('.works').hide();
});
function match(arr1, arr2) {
if(arr1.length !== arr2.length) { return false; }
for(var i = arr1.length; i--;) {
if(arr1[i] !== arr2[i]) { return false;}
}
return true;
} …Run Code Online (Sandbox Code Playgroud)我目前正在通过制作一个登录应用程序来学习vuejs,但是我可以访问它给我提供的未定义输入的值,我显然在这里做错了,但是我找不到我在这里出错的地方是我的代码,你能指出我吗向正确的方向是代码
var app = new Vue({
el: '#app',
data() {
return {
username: "",
password: ""
}
},
methods: {
login() {
console.log(this.username)
},
}
})Run Code Online (Sandbox Code Playgroud)
<div id="app">
<div class="main">
<div class="left">
<h1>Login</h1>
<p><i>To your Account</i></p>
<form @submit.prevent="login">
<input type="text" name="username" v-model="username" placeholder="Username" />
<input type="password" name="password" v-model="password" placeholder="Password" />
<input type="submit" value="LOG IN">
</form>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.0"></script>Run Code Online (Sandbox Code Playgroud)
先感谢您
如何Promise.all在 ramda 管道中使用?我想我在这里错过了一些愚蠢的事情。
const pipeline: Function = R.pipe(
R.map((record) => record.body),
R.map(JSON.parse),
R.map(asyncFunction),
console.log
);
Run Code Online (Sandbox Code Playgroud)
返回一个承诺数组( 的输入Promise.all)
[ Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> },
Promise { <pending> } ]
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试等待这些承诺通过 解决Promise.all,如下所示:
const pipeline: Function = R.pipe(
R.map((record) => record.body),
R.map(JSON.parse),
R.map(asyncFunction),
Promise.all,
R.andThen(useTheReturn)
); …Run Code Online (Sandbox Code Playgroud) 我有一个使用 lodash_.zipObject()函数生成的对象。所以我有 2 个数组,一个位置,一个数字。
var locs = {'Aberdeen': 304, 'Aberystwith': 109, 'Belfast': 219, 'Birmingham': 24, 'Brighton': 147, …}
Run Code Online (Sandbox Code Playgroud)
我需要根据输入值返回密钥。例如,function(304)将返回'Aberdeen'.
我试过,_.findkey(locs, 304);但这只是返回未定义。我尝试过的任何其他尝试总是返回 undefined 或 -1。不太确定从这里去哪里。
javascript ×6
arrays ×3
ecmascript-6 ×3
lodash ×3
css ×2
html ×2
object ×2
alignment ×1
baseline ×1
es6-promise ×1
filter ×1
promise ×1
ramda.js ×1
react-hooks ×1
react-redux ×1
reactjs ×1
unit-testing ×1
vue.js ×1