2016-11-18 3 views
1

Я новичок в React Redux, у меня есть компонент уведомления, который показывает сообщение. Я хочу скрыть это сообщение при щелчке этого значка close. , вот мой код. Пожалуйста, предложите.React Redux Уведомляющее сообщение

export default class NotificationMessage extends Component { 
    constructor(props) { 
     super(props); 
     this._onClick = this._onClick.bind(this); 
    }; 
    _onClick() { 
     console.log("close this button"); 

    }; 
    render() { 
     var message; 
     //let classerr = this.props.messageType ? 'notificationTheme.success' : 'notificationTheme.success'; 

     //let cssClasses = `${classerr}`; 
     if(this.props.messageType=='success') 
     { 
      message = <div className={notificationTheme.success}> 
       <span className={notificationTheme.message}>{this.props.content}</span> 
       <i className={`${iconTheme['ic-remove']} ${notificationTheme.remove} ic-remove `} onClick={() => this._onClick()}/> 

      </div> 
     } 
     else 
     { 
      message = <div className={notificationTheme.error}> 
       <span className={notificationTheme.message}>{this.props.content}</span> 
       <i className={`${iconTheme['ic-remove']} ${notificationTheme.remove} ic-remove `} onClick={() => this._onClick()}/> 

      </div> 
     } 
     return (
      message 
     ) 
    } 
} 

NotificationMessage.propTypes = { 
    config: PropTypes.shape({ 
     content: PropTypes.string.isRequired 
    }) 
}; 
+0

Вы используете React с Redux или React самостоятельно? – ggilberth

+0

реагируют с redux, и это отдельный компонент, называемый в каждой форме. все это основано на falag из формы - {this.state.displaySNotification? : ''} {this.state.displayENotification? : ''} –

+0

Вы не сможете скрыть сообщение внутри этого компонента, если вы не измените сообщение, чтобы вернуть пустой div, но Я не рекомендую это делать. Оставляет ли этот компонент внутри другого? Если это так, я бы использовал состояние для управления рендерингом компонента Notification и передал функцию в качестве опоры, которая обновляет состояние. – ggilberth

ответ

1

Пройдите через функцию onClick от внешнего компонента.

showMessage() { 
    const { displayNotification } = this.state; 
    this.setState({ 
     displayNotification: !displayNotification 
    }); 
} 

Если вы основываете отображение уведомления о состоянии, то просто пройти через функцию ShowMessage в качестве опоры для уведомления об изменении состояния по щелчку значка закрытия. Затем, когда щелкнули значок закрытия, он изменит значение displayNotification на false и скроет уведомление.

0

Вы можете иметь реакцию состояния fDisplayNotification как истинные первоначально как такой

constructor(props) { 
     super(props); 
     this.state = {fDisplayNotification : true} 
     this._onClick = this._onClick.bind(this); 
    }; 

На событии нажатия кнопки установить состояние ложного

_onClick() { 
     this.setState({fDisplayNotification :false}); 
    } 

Это должны вызвать повторный рендер компонента в состоянии изменилось.

изменить способ визуализации, чтобы он возвращался пустым, если this.state.fDisplayNotification является ложным.