小编Ori*_*ori的帖子

测试 react-redux useSelector

我有一个反应应用程序,它使用 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() 在我看来并不正确。

unit-testing reactjs react-redux react-hooks

14
推荐指数
2
解决办法
1万
查看次数

将对象数组内每个对象的键获取到数组中:Javascript

我有一个具有以下格式的对象

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)

javascript arrays ecmascript-6

8
推荐指数
1
解决办法
1万
查看次数

将文本基线与 div 底部对齐

我正在尝试将a 中某些文本的基线div对齐到所说的最底部边缘div(这样字符 likegj实际上会溢出 div)

我似乎只能将文本元素的底部边缘与div. 我尝试在内部和外部元素上使用vertical-alignbaseline和,但没有成功。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的基线应位于其上方 …

html css alignment vertical-alignment baseline

8
推荐指数
1
解决办法
1万
查看次数

在函数参数中围绕变量的花括号是什么意思

我在包上看到了这段代码:

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通过在函数参数中将花括号括起来会发生什么?

ecmascript-6

7
推荐指数
1
解决办法
5120
查看次数

将分隔的字符串拆分为对象

我发现自己经常使用以下模式

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)

你会如何使用下划线使这更简洁和优雅?

underscore.js lodash

5
推荐指数
1
解决办法
9869
查看次数

具有多个值的键上的lodash过滤器

我正在尝试找出,如何找出多个键值的对象过滤器数组。与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)岁的用户? 数字也可以改变运行时间

javascript filter lodash

5
推荐指数
1
解决办法
7589
查看次数

选择所有以下划线(_)开头的对象键

我需要在以下对象中创建所有键(不是值)的数组,其中键以_下划线开头...

在以下代码段中,我尝试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)

javascript arrays object ecmascript-6

5
推荐指数
2
解决办法
124
查看次数

vuejs输入值未定义

我目前正在通过制作一个登录应用程序来学习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)

先感谢您

html javascript css vue.js

5
推荐指数
0
解决办法
66
查看次数

在 Ramda 管道内使用 Promise.all

如何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)

javascript promise es6-promise ramda.js

5
推荐指数
1
解决办法
1009
查看次数

在JS中查找对象上特定值的键

我有一个使用 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 arrays object lodash

4
推荐指数
2
解决办法
1万
查看次数