public class UserNameComponent extends ReactComponent {
private String userName;
public UserNameComponent(String userName) {
this.userName = userName;
}
public void render() {
// ...
}
}
public class UserInfoPanel extends ReactComponent {
private String userName;
private String avatarUrl;
public UserInfoPanel(String userName, String avatarUrl) {
this.userName = userName;
this.avatarUrl = avatarUrl;
}
public void render() {
return (
<div>
<UserAvatarComponent avatarUrl={this.avatarUrl} />
<UserNameComponent userName={this.userName} />
</div>
);
}
}
public class ParentComponent extends ReactComponent {
private boolean isChecked;
public ParentComponent() {
this.isChecked = false;
}
public void handleChange() {
this.isChecked = !this.isChecked;
}
public void render() {
return (
<ChildComponent isChecked={this.isChecked} onCheckboxChange={this.handleChange} />
);
}
}
public class ChildComponent extends ReactComponent {
private boolean isChecked;
private Runnable onCheckboxChange;
public ChildComponent(boolean isChecked, Runnable onCheckboxChange) {
this.isChecked = isChecked;
this.onCheckboxChange = onCheckboxChange;
}
public void render() {
return (
<input type="checkbox" checked={this.isChecked} onChange={this.onCheckboxChange} />
);
}
}
public class ParentComponent extends ReactComponent {
private String message;
public void handleMessageChange(String message) {
this.message = message;
}
public void render() {
return (
<ChildComponent message={this.message} onMessageChange={this.handleMessageChange} />
);
}
}
public class ChildComponent extends ReactComponent {
private String message;
private Consumer<String> onMessageChange;
public ChildComponent(String message, Consumer<String> onMessageChange) {
this.message = message;
this.onMessageChange = onMessageChange;
}
public void handleChange(event) {
this.onMessageChange(event.target.value);
}
public void render() {
return (
<input type="text" value={this.message} onChange={this.handleChange} />
);
}
}