小编evs*_*vsc的帖子

使用JavaScript Reduce生成对象

我有一个数组[22, 44, 12, 9, 4, 23, 1, 11, 10, 5, 2, 123],我需要使用reduce来创建一个如下所示的对象:

{  
   numbersLessThanTen: [...],  
   numbersGreaterThanTen: [...]
}
Run Code Online (Sandbox Code Playgroud)

我有解决方案,如下:

const listOfNumbers = [22, 44, 12, 9, 4, 23, 1, 11, 10, 5, 2, 123];


const groupedBySize = listOfNumbers.reduce((total, next) => {
  const less = total.numbersLessThanTen || [];
  const more = total.numbersGreaterThanTen || [];
  
  next > 10 ? total.numbersGreaterThanTen = [].concat(more, next) : total.numbersLessThanTen = [].concat(less, next);
  return total;
  
}, {});
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么以下不起作用?它只返回初始值.当我使用.push()而不是.concat()时,它可以正常工作,但我真的很想知道为什么这种方式不起作用.谢谢!

const groupedBySize = listOfNumbers.reduce((total, next) => { …
Run Code Online (Sandbox Code Playgroud)

javascript arrays reduce functional-programming

6
推荐指数
1
解决办法
334
查看次数

在 Redux 中将多个操作传递给 mapDispatchToProps

我尝试在此组件中使用 3 个操作。一个使我退出 Firebase Google Auth(正常工作),另外两个只是将一段状态更改为某个字符串,稍后我将使用该字符串来确定要渲染的组件。

注释掉的mapDispatchToProps工作正常,这就是我习惯的编写方式,使用注销方法的语法是我无法弄清楚的。如何重构以下内容以便 setRoutines 和 setExercises 工作?

组件:

import React from 'react';

import { connect } from "react-redux";
import { firebaseLogout } from '../Auth/Auth.actions';
import { setRoutines, setExercises } from './Profile.actions';

const Profile = ({logout, setRoutines, setExercises}) => (
    <React.Fragment>
        <button onClick={setRoutines}>My Routines</button>
        <button onClick={setExercises}>My Exercises</button>
        <button onClick={logout}>Logout</button>
    </React.Fragment>
);

const mapDispatchToProps = (dispatch) => ({
    logout: () => dispatch(firebaseLogout()),
    setRoutines,
    setExercises,
});

// const mapDispatchToProps = {
//     setRoutines,
//     setExercises
// };

export default …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 reactjs redux react-redux

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

如何在Firestore中不断地将对象添加到嵌套集合中

我正在编写一个 React/Redux 应用程序,它使用 Firebase Auth/Firestore 来跟踪用户的健身锻炼。我有 Redux Form 来处理数据提交,并且我有以下想要在 Firestore 中实现的示例数据结构:

users {
  id {
    name: 'John Smith'
    uid: 'k1s7fxo9oe2ls9u' (comes from Firebase Auth)
    exercises: {
      {
        name: 'Bench Press',
        sets: 3,
        reps: 10,
        lbs: 100,
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何不断将新的练习对象添加到练习子集合中(在 Firestore 中,我猜这将是地图的字段类型)。我想做的是当用户提交新表单时在“练习”中添加新对象。例如,如果用户想要添加硬拉练习,则如下所示:

   users {
      id {
        name: 'John Smith'
        uid: 'k1s7fxo9oe2ls9u' (comes from Firebase Auth)
        exercises: {
          {
            name: 'Bench Press',
            sets: 3,
            reps: 10,
            lbs: 100,
          },
          {
            name: 'Deadlift',
            sets: 3,
            reps: 12,
            lbs: 120,
          }
        } …
Run Code Online (Sandbox Code Playgroud)

javascript firebase reactjs react-redux google-cloud-firestore

0
推荐指数
1
解决办法
4501
查看次数