小编The*_*rus的帖子

更喜欢解构es-lint错误

我有这个功能:

const calculateTotal = (items) => {
  return items.reduce((totalPrice, basketItem) => {
    const price = basketItem.product.price;
    const quantity = basketItem.quantity;
    const total = price * quantity;
    return totalPrice + total;
  }, 0);
};
Run Code Online (Sandbox Code Playgroud)

我如何通过ES6 +解构来解决这个问题?

我知道我需要类似的东西(第4行):

const { basketItem: quantity } = quantity;

但我不能让第3行工作

javascript destructuring reactjs eslint

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

查询 dynamodb 特定字段

如何在 dynamodb 中查询匹配特定规则的所有项目?

我正在建立一个在线商店(如 Asos),在 dynamodb 中我有一个产品表。所有产品都有“类别”字段。所以我只想做一个简单的查询,我说类似的话

FROM products WHERE category == 'trainers'
Run Code Online (Sandbox Code Playgroud)

我已经设法让它工作,所以我扫描整个表并向我返回所有产品,但我现在想要更具体的查询

我假设我想使用类似的东西:KeyConditionExpression但是当我这样做时我不断收到错误

编辑后的问题:

在此输入图像描述

代码:

componentDidMount() {
    console.log('mounted');
    const AWS = window.AWS;
    const params = {
      TableName: 'Products',
      FilterExpression: "category = trainers"
    };
...secret key code
ddb.scan(params, (err, data) => {
  if (err) {
    console.log(err, err.stack);
  } else {
    console.log(data);
    this.setState({ products: data })
  }
});
Run Code Online (Sandbox Code Playgroud)

javascript amazon-web-services amazon-dynamodb

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

在firebase中存储空数组

我的 firebase 应用程序与 React 一起使用,我注册用户,然后将那里的信息记录到数据库中。我正在创建一个“约会应用程序”,我想要某种方式来存储空数组。例如,matchers: []等等

我试过这样的事情:

firebase.database().ref('users/' + userId).set({
      id: userId,
      username: name,
      email: email,
      matchers: [],
      likedUsers: [],
      disLikedUsers: []
    });
Run Code Online (Sandbox Code Playgroud)

但后来读到 firebase 并没有真正处理数组,现在我不确定如何做到这一点。我想要空数组,所以当用户开始使用应用程序时,他们可以添加到他们的各种数组中。

有任何想法吗?

javascript arrays firebase reactjs firebase-realtime-database

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

异步等待组件确实挂载

这是我的componentDidMount方法.我想设置当前用户的状态,然后在设置该用户时调用该函数.我怎样才能做到这一点?

  componentDidMount = () => {
    firebase.auth().onAuthStateChanged((user) => {
      if (user) {
        this.setState({user: user})
      }
    });
    this.props.retrieveMatches(this.state.user.uid)
  }
Run Code Online (Sandbox Code Playgroud)

我尝试过使用async/await但是我没有在这里正确使用它:

  async componentDidMount = () => {
    await firebase.auth().onAuthStateChanged((user) => {
      if (user) {
        this.setState({user: user})
      }
    });
    this.props.retrieveMatches(this.state.user.uid)
  }
Run Code Online (Sandbox Code Playgroud)

基本上我想在第7行调用道具功能之前等待第2-6行

javascript asynchronous setstate reactjs

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

Wrapper.find 未找到类

这是我的组件:

const User = ({ users }) => (
  <div className="displayContainer">
    {users &&
     users.length > 0 &&
     users[0].username ?
     <div className="userOnShow">
       <img className="userImage"alt="no image yet"/>
       <div>{users[0].username}, {users[0].age}</div>
     </div>
     :
     <div className="noOneLeft">
      {'Sorry, no new people in your area'}
     </div>
    }
  </div>
)
Run Code Online (Sandbox Code Playgroud)

我有 2 个问题。我应该测试什么样的东西?即只是它呈现某些类等?

我假设测试三元将是集成测试?

还有我的主要问题,当我这样做时:

describe.only('DisplayingUser', () => {
  let wrapper;
  const usersStub = {remainingUsers: []}
  it('expects the props to be correct', () => {
    wrapper = shallow(
      <User
        users={usersStub}
      />
    )
    const userClass = wrapper.find('.userOnShow')
    console.log(userClass, 'uc'); …
Run Code Online (Sandbox Code Playgroud)

testing reactjs enzyme

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

在允许给定存储库中的任何提交之前运行验证脚本

每当 RepoA 中的某人在分支上进行提交时,我想在本地运行脚本

currentBranch=$(git rev-parse --abbrev-ref HEAD)

if [[ $currentBranch = *"my-"* ]]; then
  echo "contains my"
else
  echo "Hold on there! you need to rename your branch before you commit!
  "
fi
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经运行了这个工作,每当我运行它时npm run test:script,它就会运行>"test:script": "./branchname.sh"

但是,我有一些问题。每次有人提交时我如何运行它?

我尝试将其放入我的 package.json 中

  "pre-commit": [
    "lint",
    "test:script"
  ],
Run Code Online (Sandbox Code Playgroud)

但它不会在每次提交时运行

另外,如果脚本失败,我怎样才能让提交本身中止,即跳到 else 块中

git bash scripting

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

Javascript从2个数组中返回数组,删除重复项

搜索和尝试,到目前为止没有运气。

var newUsers = [{name: 'rich', id: 25}, {name: 'lauren', id: 35}, {name: 'dave', id: 28} ]

var likedUsers = [{name: 'derek', id: 39}, {name: 'rich', id: 25}, {name: 'brian', id: 38} ]
Run Code Online (Sandbox Code Playgroud)

我想要返回的是:

var leftUsers = [{name: 'lauren', id: 35}, {name: 'dave', id: 28} ]
Run Code Online (Sandbox Code Playgroud)

基本上没有rich对象,因为这是重复的。我只关心id钥匙。

我试过了:

newUsers.forEach((nUser) => {
    likedUsers.forEach((lUser) => {
        if (nUser.id !== lUser.id){
            leftUsers.push(nUser)
        }
    })
})
Run Code Online (Sandbox Code Playgroud)

但显然这行不通,因为这只会在它们不匹配时立即添加它们。

如果可能,想要使用 forEach/map/filter 的 es6 解决方案

谢谢

javascript arrays duplicates javascript-objects ecmascript-6

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

在反应状态下删除第一个数组项

我知道如何做到这一点,但尝试这种方式,不知道为什么它不会工作?

  drawCard = () => {
    const deck = this.state.cards;
    deck.shift();
    console.log(deck, 'deck'); //this is correctly logging one less everytime
    this.setState({cards: deck})
  }
Run Code Online (Sandbox Code Playgroud)

卡片只是一个对象

所以即使正在调用该函数并且控制台日志正在工作,为什么它不更新状态?

(console.log(state.cards.length)总是返回3)

javascript arrays reactjs

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

在数组上过滤n次

如果有人想选择"T恤"和"绿色",我想重新创建网上商店的过滤器.显然很容易.但是,如果他们选择多种颜色,我该怎么做?

我知道我可以像这样链接:colors.filter(col => col.name =='green' || col.name =='black')但是如果我想要选择10种颜色或20种颜色,那么目前这种颜色不是很容易扩展.我可以用某种方式映射颜色然后过滤吗?

我尝试了这个,但它不起作用:

colors = ['black', 'red']
col = [{name: 'green'}, {name: 'black'}, {name: 'red'}]
colors.forEach((c) => col.filter((ca) => ca.name === c))`
Run Code Online (Sandbox Code Playgroud)

javascript arrays filter

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

切换组件以响应按钮单击

我有4个组件。我只想一次渲染一个。我的导航中有按钮,当我单击一个按钮时,它应该呈现该组件,然后隐藏其他 3 个(即将它们设置为 null)

这很容易使用 2 个组件。我只有一个像这样的切换功能:

toggle() {
  this.setState(prevState => ({
    showTable: !prevState.showTable
  }));
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试在我有这个的地方调整这个:

showComponent(component) {
  this.setState(prevState => ({
    [component]: !prevState.component
  }));
}
Run Code Online (Sandbox Code Playgroud)

当我单击相应的按钮时,这当前显示了组件。但是,一旦再次单击相同的按钮,它就不会隐藏组件。

我的所有按钮都像这样调用这个方法:

<button onClick={() => this.showComponent('AddPlayer')}>Add</button>
<button onClick={() => this.showComponent('ShowPlayers')}>Players</button>
<button onClick={() => this.showComponent()}>Table</button>
<button onClick={() => this.showComponent()}>Matches</button>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

编辑:

{this.state.AddPlayer ?
              <div className="add-container">
                <AddPlayer />
              </div>
              :
              null
            }
            {this.state.ShowPlayers ?
              <div className="players-container">
                <Players />
              </div>
              :
              null
            }
Run Code Online (Sandbox Code Playgroud)

javascript components toggle reactjs

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

如何在反应组件中使用解构

我已经在网上做了大量的阅读,并且无法在我的脑海中进行解构.

//before destructuring
function me(details){
  console.log('My name is ' + details.name + ' and I work for ' + details.company);
}
//after destructuring
function me({ name, company }){
  console.log('my name is ' + name + ' and i work for ' + company);
}

me({
  name: 'Rich',
  age: 34,
  city: 'London',
  company: 'Google'
})
Run Code Online (Sandbox Code Playgroud)

我写过这个,这很有道理,但我得到的一件事就是以下内容.

如果你这样做:

export default ({ name }) => <h1>Hello {name}!</h1>;

<Hello name="CodeSandbox" />

为什么我不能这样做:

export default ( name ) => <h1>Hello {name}!</h1>;

删除{}函数参数?

如果有人看到我做错了,请他们解释一下吗? …

javascript destructuring ecmascript-6 reactjs

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