Ant Design Dropdown - Доступ к значению реквизита в детских меню [Реагировать] - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть список постов, таких как фейсбук, у каждого поста есть выпадающий список "редактировать, удалять, сообщать".

Я использую Ant Design UI, проблема в том, что я не могу получить доступ к реквизитамзначение "DeleteId" внутри дочерних меню.

Но я могу получить доступ к значениям реквизита (deleteId) внутри компонента.

Согласно Ant Design здесь , дочерние меню (меню) объявляются вне компонента.

Codepen Demo

//-------------- Outside Component --------------------

const onClick = function (info) {
  console.log(info)
};

const menu = (
  <Menu onClick={onClick}>

    { 
     // this.props.deleteId  <=== this doesn't work, props value is "undefined"
    }

    <Menu.Item key="1">Edit</Menu.Item>
    <Menu.Item key="delete-Id-here">Delete</Menu.Item>
    <Menu.Item key="3">Report</Menu.Item>
  </Menu>
);

//-------------- Inside Component --------------------

class Demo extends React.Component {
   render(){

     console.log("deleteId = "+ this.props.deleteId +" ( Inside component ) ")
// this.props.deleteId  <=== This props value works fine, I can access all props data inside component

     return (
  <Dropdown overlay={menu}>
       <a className="ant-dropdown-link" href="#">
        <Icon style={{fontSize:24}} type="ellipsis" theme="outlined" />
    </a>
  </Dropdown>
     )
   }
}

ReactDOM.render( <Demo deleteId="123456"/>,
  mountNode);

Возможно, он не знает значений "props" внутри дочерних меню

1 Ответ

0 голосов
/ 13 сентября 2018

Похоже, вы просто пропускаете передачу реквизита к вашей функции menu.Ниже приведен модифицированный код для передачи deleteId в качестве параметра функции menu.

const menu = (deleteId) (
  <Menu onClick={onClick}>
    <Menu.Item key="1">Edit</Menu.Item>
    <Menu.Item key="delete-Id-here">Delete {deleteId}</Menu.Item>
    <Menu.Item key="3">Report</Menu.Item>
  </Menu>
);

Demo

class Demo extends React.Component {
  render(){
    return (
      <Dropdown overlay={menu(this.props.deleteId)}>
        <a className="ant-dropdown-link" href="#">
          <Icon style={{fontSize:24}} type="ellipsis" theme="outlined" />
        </a>
      </Dropdown>
     )
  }
}
...