我有这个功能:
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行工作
如何在 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) 我的 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
这是我的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行
这是我的组件:
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) 每当 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 块中
搜索和尝试,到目前为止没有运气。
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
我知道如何做到这一点,但尝试这种方式,不知道为什么它不会工作?
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)
如果有人想选择"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) 我有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) 我已经在网上做了大量的阅读,并且无法在我的脑海中进行解构.
//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 ×9
reactjs ×7
arrays ×4
ecmascript-6 ×2
asynchronous ×1
bash ×1
components ×1
duplicates ×1
enzyme ×1
eslint ×1
filter ×1
firebase ×1
git ×1
scripting ×1
setstate ×1
testing ×1
toggle ×1