Voor mijn opdrachtgever ben ik bezig om een website om te zetten van een server side oplossing naar een react frontend.
Ik heb een react component gemaakt met de naam ConfirmDialog. Dit wordt dan een weet u het zeker dialog.
Dit werkt echter ik kan deze component niet extenden. Ik zie 2 mogelijkheden echter beide willen niet,
1. Ik kan de ConfirmDialog extenden op de volgende manier echter die werkt niet omdat in COnfirmDialog worden de methodes met this.methodeNaam aangeroepen en dan wordt de handleOK in de sub class niet aangeroepen.
2. Ik kan een component maken die de confirmDialog terug geeft in de render methode echter dan kan ik de actions niet overschrijven:
Ik werk vooral in Java en dan is React een hele onduidelijke onoverzichtelijke iets. Ik wil een component kunnen extenden zodat die component op het scherm verschijnt. Hoe doe ik dat?
Ik heb een react component gemaakt met de naam ConfirmDialog. Dit wordt dan een weet u het zeker dialog.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
| import React from 'react'; import Dialog from 'material-ui/Dialog'; import FlatButton from 'material-ui/FlatButton'; import RaisedButton from 'material-ui/RaisedButton'; class ConfirmDialog extends React.Component { state = { showDialog: false }; handleOpen = () => { this.setState({showDialog: true}); }; handleClose = () => { this.setState({showDialog: false}); }; handleOK = () => { alert('handleOk'); }; handleCancel = () => { this.handleClose(); }; standardActions = [ <FlatButton label={this.props.cancelBtnText} primary={true} onTouchTap={this.handleCancel} />, <FlatButton label={this.props.okBtnText} primary={true} keyboardFocused={true} onTouchTap={this.handleOK} />, ]; render() { return ( <div> <RaisedButton label={this.props.openBtnText} onTouchTap={this.handleOpen} /> <Dialog title={this.props.titleText} actions={this.standardActions} modal={true} open={this.state.showDialog} onRequestClose={this.handleClose} > {this.props.messageText} </Dialog> </div> ); } } ConfirmDialog.defaultProps = { cancelBtnText: 'Annuleren', okBtnText: 'Doorgaan', messageText: 'Wilt u doorgaan?', titleText: 'Weet u het zeker?', openBtnText: 'Bevestigen' }; export default ConfirmDialog; |
Dit werkt echter ik kan deze component niet extenden. Ik zie 2 mogelijkheden echter beide willen niet,
1. Ik kan de ConfirmDialog extenden op de volgende manier echter die werkt niet omdat in COnfirmDialog worden de methodes met this.methodeNaam aangeroepen en dan wordt de handleOK in de sub class niet aangeroepen.
code:
1
2
3
4
5
| class UserAccountDeleteConfirmDialog extends ConfirmDialog { // Override handleOK methode } |
2. Ik kan een component maken die de confirmDialog terug geeft in de render methode echter dan kan ik de actions niet overschrijven:
code:
1
2
3
4
5
6
7
8
9
| class UserAccountDeleteConfirmDialog extends React.Component { render() { return ( <ConfirmDialog messageText="Weet u zeker dat u deze gebruiker wilt verwijderen" openBtnText="Verwijderen" cancelBtnText="Annuleren" okBtnText="Doorgaan" titleText="Weet u het zeker?" /> ) } } |
Ik werk vooral in Java en dan is React een hele onduidelijke onoverzichtelijke iets. Ik wil een component kunnen extenden zodat die component op het scherm verschijnt. Hoe doe ik dat?