【问题标题】:My dialog box component is not Showing in Reactjs我的对话框组件未在 Reactjs 中显示
【发布时间】:2018-10-13 20:52:00
【问题描述】:

我有一个组件名称对话框,我想在单击所有其他组件时显示它。我有一个主要组件作为

class ImageEditor extends Component {

  constructor() {
    super();
    this.state = { images: [], redirect: 'no', imageId: '', isDialogOpen: 'no' };
  }

  componentDidMount() {
    let promise = apiGateway.getImages();
      promise.then((images) => {
        this.setState({ images: images });
      });
}

openDialog = () =>{
  this.setState({ isDialogOpen : 'yes' });
}

closeDialog = () =>{
this.setState({ isDialogOpen: 'no' });
}


deleteImage = (id) => {
  apiGateway.removeImage(id);
}

setRedirect = (id) => {
  this.setState({ redirect: 'yes', imageId: id });
}



renderImage(image,index){

  return(
    <div key={index}>
     <p>Title: {image.title}</p>
     <p>Description: {image.description}</p>
    <button onClick={(e)=> this.deleteImage(image._id)}>DELETE</button>
    <button onClick={(e)=> this.setRedirect(image._id)}>UPDATE</button>
    <button onClick={this.openDialog}>SHARE</button>
    <img className='image' src={image.link} width='100' height='100' alt='nature'/>
    <br/><br/>
    </div>
    );
}


  render() {
        const { redirect , isDialogOpen } =  this.state;
        if(redirect === 'yes'){
          return <Redirect to={`/update/${this.state.imageId}`}/>
        }

         if(isDialogOpen === 'yes'){
          <DialogBox />  ????????
        }
    return(  
                 <div>
                      <div>{
                        this.state.images.map((image,index)=>{

                          return this.renderImage(image,index);
                        })
                      }
                      </div>
                </div>
    );
  }

}

export default ImageEditor;

当一个人点击 SHARE 时,我希望 Dialog Box 打开。我不知道我在做什么,即使用 dialogBox 加载组件是对还是错。所以每一个建议或任何建议肯定会对我有所帮助。这是我的对话组件(现在我收到一个错误:预期分配或函数调用,而是看到一个表达式 no-unused-expressions)

class DialogBox extends Component {

  render() {

    return(
        <div>
        <Dialog title="Dialog Title" modal={true} onClose={this.handleClose} buttons={ [{ text: "Close", onClick: () => this.handleClose() }] }>
                        <h1>Dialog Content</h1>
                        <p>More Content. Anything goes here</p>
        </Dialog>
        </div>
        );
  }

}

【问题讨论】:

    标签: html reactjs react-redux frontend


    【解决方案1】:

    你可以这样做:

    return (
      <div>
        <insert your other components>
        {this.state.isDialogOpen === 'yes' && <DialogBox />}
      <div>
    )
    

    我建议isDialogOpen 使用布尔值而不是字符串。

    【讨论】:

    • 感谢您的建议。从现在开始,我将使用布尔值。但该组件仍未加载..我应该把这段代码放在哪里??
    • 在您的ImageEditorrender 中,将{this.state.isDialogOpen === 'yes' &amp;&amp; &lt;DialogBox /&gt;} 添加到最后两个&lt;/div&gt; 之间。
    • 什么都没有发生!!。我把它放在最后 2
      之间,当我点击 SHARE 按钮时,滚动向上。我认为组件正在加载但未显示..我可能错了!
  • 您点击了“分享”按钮?如果你只有return &lt; DialogBox /&gt;,它可以工作吗?
  • 也不确定您使用的是什么Dialog 组件。 modal 属性是否指示它是打开还是关闭?
  • 猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多