gpt4 book ai didi

javascript - React-Redux——从列表中选择项目

转载 作者:行者123 更新时间:2023-11-30 15:51:53 25 4
gpt4 key购买 nike

React 新手,我很难从食谱列表中选择一个项目。我正在研究如何从列表中删除食谱,但首先我想弄清楚如何选择该特定食谱。

这是一个运行良好的演示示例:

https://www.freecodecamp.com/challenges/build-a-recipe-box

如您所见,每个项目都有自己的删除按钮,我也在我的代码中完成了。

我的容器中有以下代码:

src/containers/recipebox.js

import React, { Component } from 'react';
import { connect } from 'react-redux';
import { ListGroup, ListGroupItem, Panel, Button, Modals } from 'react-bootstrap'
import { bindActionCreators } from 'redux';
import { deleteRecipe } from '../actions/index';

class RecipeBox extends Component {
constructor(props){
super(props);
this.state = {
open: false
};
this.renderRecipeList = this.renderRecipeList.bind(this)
}
renderRecipeList(recipeItem,index){
const recipe = recipeItem.recipe;
const ingredients = recipeItem.ingredients;
return(
<div key={index}>
<Panel bsStyle="primary" collapsible header={<h3>{recipe}</h3>}>
<ListGroup >
<ListGroupItem header="Ingredients"></ListGroupItem>
{ingredients.map(function(ingredient,index){
return <ListGroupItem key={index}>{ingredient}</ListGroupItem>;
})}
<ListGroupItem>
<Button
onClick={this.props.deleteRecipe}
value={recipeItem}
bsStyle="danger">Delete
</Button>
<Button
onClick={() => console.log('EDIT!')}
bsStyle="info">Edit
</Button>
</ListGroupItem>
</ListGroup>
</Panel>
</div>
)
}
render(){
return(
<div className="container">
<div className='panel-group'>
{this.props.addRecipe.map(this.renderRecipeList)}
</div>
</div>
)
}
}

function mapStateToProps(state) {
return {
addRecipe : state.addRecipe
};
}

function mapDispatchToProps(dispatch){
return bindActionCreators({deleteRecipe : deleteRecipe}, dispatch)
}

export default connect(mapStateToProps,mapDispatchToProps)(RecipeBox);

我的 Action 是这样的:

src/actions/index.js

export const RECIPE_ADD = 'RECIPE_ADD';
export const RECIPE_EDIT = 'RECIPE_EDIT';
export const RECIPE_DELETE = 'RECIPE_DELETE';
export function addRecipe(recipe) {
return {
type: RECIPE_ADD,
payload: recipe
}
}
export function editRecipe(recipe) {
return {
type: RECIPE_EDIT,
payload: recipe
}
}
export function deleteRecipe(event) {
return {
type: RECIPE_DELETE,
payload: event.target.value
}
}

具体来说,我在我的容器中查看这个:

      <Button
onClick={this.props.deleteRecipe}
value={recipeItem}
bsStyle="danger">Delete
</Button>

在我的 reducer 中,我看到了

payload: "[object Object]"

如何使用 onClick 事件监听器从列表中选择适当的食谱?

(注意:我还没有实现 reducer,我只是想看看如何将 action.payload 视为所选配方)

编辑:我找到了解决方案。只是我需要弄清楚如何使用 onClick 传递参数而不用自己调用。以下 ES6 代码起到了作用:

      <Button
onClick={() => this.props.deleteRecipe(recipeItem)}
bsStyle="danger">Delete
</Button>

干杯

最佳答案

我找到了解决方案。只是我需要弄清楚如何使用 onClick 传递参数而不用自己调用。以下 ES6 代码起到了作用:

  <Button
onClick={() => this.props.deleteRecipe(recipeItem)}
bsStyle="danger">Delete
</Button

关于javascript - React-Redux——从列表中选择项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39196106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com