javascript - 将项目数据传递给 react 模态

标签 javascript reactjs ecmascript-6

我有一张 map ,只渲染了几个项目,其中一条线在下面

<a onClick={()=> this.setState({"openDeleteModal":true)}>Delete</a>

显然我想在用户点击删除时打开一个模式,但我必须传递一些东西,比如项目的名称、项目的 id 来执行删除。如何将 says 名称传递给模态?

我可以像这样将 obj 名称绑定(bind)到 a 删除

我走在正确的轨道上吗?

最佳答案

在 React 应用程序上工作时,尽量不要考虑将值传递给其他组件,而是更新组件所暴露的状态。 在您的示例中,假设您的模态组件是您的 a 标签列表所属的同一组件的子组件,您可以设置您有兴趣在状态上公开给模态的值,以及更新指示模态是否打开的属性。例如:

class Container extends React.Component {
    constructor(props) {
       super(props)
       this.state = {
          openDeleteModal: false,
          activeItemName: '', //state property to hold item name
          activeItemId: null, //state property to hold item id
       }
    }

    openModalWithItem(item) {
       this.setState({
          openDeleteModal: true,
          activeItemName: item.name,
          activeItemId: item.id
       })
    }

    render() {

    let buttonList = this.props.item.map( item => {
      return (<button onClick={() => this.openModalWithItem(item)}>{item.name}</button>
    });

    return (
     <div>
        {/* Example Modal Component */}
        <Modal isOpen={this.state.openDeleteModal}  
               itemId={this.state.activeItemId}
               itemName={this.state.activeItemName}/>
        { buttonList }
     </div>
    )
    }
}

关于javascript - 将项目数据传递给 react 模态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43335452/

相关文章:

javascript - jQuery 追加 css 删除反斜杠

css - 关于我的 react 应用程序中的网格布局的问题

javascript - react-native app 已经启动,现在添加导航

javascript - 如果没有 "function"关键字,这个对象方法定义如何工作?

javascript - 如何根据条件渲染组件?

JavaScript:为什么 .forEach 不起作用?

javascript - 使用 Bootstrap Modal 窗口作为 PartialView

javascript - D3 非连续日期域在 X 轴上产生间隙

javascript - Gatsby 中的类型错误 : Cannot read property 'data' of undefined . ...src/pages/index.js

Typescript 1.5,导入 ES6 模块