Comments (5)
But I assume that calling getFragment directly in Relay.Route also from other components is also reasonable?
At the moment, there's a 1:1 mapping between a route root query and a fragment. You should also check #20 (comment), because the Component
argument is going away too. So, multiple routes probably aren't what you're looking for.
Digging through the source code, you might be able to achieve what you're looking for using variables, doing something like this:
var MyComponentContainer = Relay.createContainer(MyComponent, {
initialVariables: {
showPopup: false,
},
fragments: {
album: (variables) => Relay.QL`
fragment on Album {
name,
${SongList.getFragment('songs').if(variables.showPopup)}
}
}``
}
});
And then running setVariables
when you need to get the songs. Note: this is untested, and I have no idea if this will be a supported feature.
from relay.
Another possibility would be to just use connections, and do something like:
var MyComponentContainer = Relay.createContainer(MyComponent, {
initialVariables: {
songsToShow: 0,
},
fragments: {
album: (variables) => Relay.QL`
fragment on Album {
name,
songs(first: $songsToShow) {
edges {
node {
${SongList.getFragment('songs')}
}
}
}
}
}`
}
});
and use setVariables
again to grab the list.
from relay.
These conditional fragments would be great pattern for these use cases.
${SongList.getFragment('songs').if(variables.showPopup)}
Could someone from fb please comment if thats pattern we can use at the moment/future?
Thanks
from relay.
@jardakotesovec Sorry for missing this: yes, ${Child.getFragment(..).if(variables.foo)}
is supported. Be sure to check the value of variables.showPopup
in your render code and skip rendering <SongList>
when it's false, otherwise you'll get errors about missing data.
from relay.
@jardakotesovec did that solution work for you? I'm going to close this issue since the question is answered, but feel free to reopen if you have any additional questions!
from relay.
Related Issues (20)
- Can I set value of `fetchTime` manually?
- "@graphql-codegen/gql-tag-operations-preset" causing relay-compiler not finding config file
- Missing type definition in assignable fragment generated file in Typescript HOT 6
- Schema extensions are ignored on MacOS, but not on Linux HOT 6
- Relay compiler - No operation text / No operation provided
- loadNext set params to null that not include pagination-fragment HOT 3
- Type-safe updaters: non-assignability of unions HOT 1
- Flow type PreloadedQuery is missing from 16.1.0 release HOT 2
- Integration with google/oss-fuzz for continuous fuzzing HOT 6
- Cargo doc fails to generate documentation HOT 5
- Non meaningful error and application break when declaring a `GraphQLTaggedNode` from `react-relay` HOT 2
- Relay Compiler outputted file links - bad format for VSCode HOT 8
- graphql-syntax: Parser crash `graphql_syntax::parse_document_with_features` HOT 2
- Publish Relay vscode extension v2.1.0 HOT 9
- graphql-syntax: Parser crash parse_document_with_features (internal error: entered unreachable code)
- [lsp] Find field references not always working HOT 2
- graphql-syntax: Parser crash parse_document_with_features (assertion failed: start <= end)
- How to create environment factory HOT 4
- optimisticUpdater has invalid signature
- optional field in array is generated as not undefined but nullable
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from relay.