Ich möchte meine Root-Abfrage-Parameter basierend auf der this.state.eventid
, die eine untergeordnete Komponente ist, aber ich habe keine Ahnung, wie Requisiten Relay-Root-Container erhalten. Ich begann mit dem Relay-Starter-Kit.So senden Sie this.state von einer Komponente zum Relay-Stammcontainer
habe ich Komponente reagieren, die ein Dropdown-Menü hat, und onSelect es für eventId
renderAttend() {
if (this.props.groups != null && this.state.success != true) {
var events = this.props.events.map(function(event){
var boundSelect =() => {this.setState({eventid:event.nodes[0].id})}
return <MenuItem style={{fontSize:20}}eventKey={event.nodes[0].id} onSelect={boundSelect.bind(this)}>{event.nodes[0].properties.summary}/{event.nodes[0].properties.start}</MenuItem>
},this)
var teams = this.props.groups.map(function(team){
var boundSelect =() => {this.setState({teamid:team.nodes[0].id})}
return <MenuItem style={{fontSize:20}}eventKey={team.nodes[0].id} onSelect={boundSelect.bind(this)}>{team.nodes[0].properties.name}</MenuItem>
},this)
return (
<div>
<ButtonGroup>
<DropdownButton style={{padding:"15px",fontSize:20}}title="Events" id="bg-vertical-dropdown-2">
{events}
</DropdownButton>
<DropdownButton style={{padding:"15px",fontSize:20,marginLeft:"5px"}} title="Groups" id="bg-vertical-dropdown-2">
{teams}
</DropdownButton>
</ButtonGroup>
</div>
)
}
}
setStates Ich möchte diesen Zustand verwenden, um irgendwie meine Wurzel Abfrage zu ändern ... meine approute ... Import Relais von 'React-Relais';
export default class extends Relay.Route {
static paramDefinitions = {
eventId: {required: false}
};
static queries = {
Event :() => Relay.QL`query{eventState(eventId:$eventId)}`,
};
static routeName = 'AppHomeRoute';
}
und meine app.js
import 'babel-polyfill';
import App from './components/App';
import AppHomeRoute from './routes/AppHomeRoute';
import React from 'react';
import ReactDOM from 'react-dom';
import Relay from 'react-relay';
ReactDOM.render(
<Relay.RootContainer
Component={App}
route= {new AppHomeRoute}
renderLoading={function() {
return <div style= {{display:"flex",justifyContent:"center",marginTop:"55px"}}> <h1>Loading...</h1></div>;
}}
renderFailure={function(error, retry) {
return (
<div>
<h1>Click Refresh</h1>
</div>
);
}}
/>,
document.getElementById('root')
);
Jetzt möchte ich von der reagieren Komponente this.state.eventid meiner Stamm Abfrage zu aktualisieren, aber ich habe keine Ahnung, wie Daten von untergeordneten Komponente passieren um auf root.container zu reagieren. Ich möchte nicht react-Router dafür verwenden :) p.s. this.props.events wurden mir von einem Ajax-Aufruf übergeben, so dass sie nicht in relay/graphql-Daten gespeichert werden.
Ich konnte nicht beschreiben, was Sie versuchen und das Beispiel, das Sie gegeben haben. Können Sie bitte Ihre Frage ausarbeiten oder überarbeiten? –