エラーを表示するためにブートストラップalert
クラスを使用するReactコンポーネントを作成しようとしています。問題は私がそれを却下できるようにしたいのですが、エラーを再度表示する必要がある場合、アラートdiv内の閉じるボタンにハンドラをアタッチして非表示にしても、再レンダリングされません。例:React:作成不可能なアラートコンポーネントを作成する
class Alert extends React.Component {
constructor(props) {
super(props)
this.handleClick = this.handleClick.bind(this)
this.state = {
display: true
}
}
handleClick() {
this.setState({
display: false
})
}
render() {
return (
<div>
{this.state.display &&
<div className={"alert alert-" + this.props.type + " alert-dismissible mt10"}>
{this.props.message}
<button type="button" className="close" onClick={this.handleClick} data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
</div>
}
</div>
)
}
}
これはアラートコンポーネントの動作コードで、内部の閉じるボタンをクリックすると非表示になります。私はAlertコンポーネントを表示/非表示する必要があるかどうかを示すブール値を持っている
class App extends React.Component {
constructor(props) {
super(props)
this.state = {
displayUploadError: false
}
this.handleRequest = this.handleRequest.bind(this)
}
handleRequest(image_url) {
this.setState({
displayUploadError: true
})
}
render() {
return (
<div className="demo__wrap">
<FormImageUpload
handleRequest={this.handleRequest}
displayUploadError={this.state.displayUploadError}
/>
</div>
)
}
}
:
class FormImageUpload extends React.Component {
...
render() {
return (
<form>
<input type="text" placeholder="Paste Image Url"/>
{this.props.displayUploadError &&
<Alert type="danger" message="There was an error trying to process the image. Please try again." />
}
<button type="submit" className="btn btn-primary mt10">SEND</button>
</form>
)
}
}
ルート親:ここで問題です。しかし、アラートを閉じても、それは再び表示されません。これをどうすれば解決できますか?
しかし、ポイントは自分自身を隠すことができる再利用可能なコンポーネントを作成することです。私はすでにフォームのコンポーネントでブーリアンを表示/非表示にしています –
なぜ2つのフラグが必要ですか?2非表示にします。フォームからブール値を渡してプロンプトとして警告します –
アラートはレンダリングされません。フォームコンポーネントは変更について知ることができません。したがって、フォームの状態を変更して子に渡します。 –