Comments (9)
I like both ideas. 👍
Just one suggestion, instead data
:
connect(({ name }) => ({
barFetch: {
url: `/foos/${name}`,
query: { foo: verifyFoo(), bar: verifyBar() }
transform: ({ foos, page }) => ({ bars: foos, page }),
then: (foo) => `/bar-for-foos-by-id/${foo.id}`
}
}))
from react-refetch.
That's even better! :)
from react-refetch.
If you approve the syntax I'll be happy to create a pull request.
from react-refetch.
To do the data transform, you should be able to use then() on the PromiseState instead of on the request in connect(). The latter will fire off a new request, which is probably not what you want.
from react-refetch.
@hnordt do you mean call the 'query' attribute 'data' (and maybe also share it with 'body') like jquery does? I wasn't following your example in relation to the issue.
from react-refetch.
Also, can we please break this into two separate issues? :)
from react-refetch.
@ryanbrainard I think transforming data on PromiseState is ok, better than add a new prop.
About query
. Sorry, I miss typed the verify
part. Another example:
connect(({ name }) => ({
barFetch: {
url: `/foos/${name}`,
query: { foo: 'bar', bar: 'foo' }
}
}))
// barFetch should request /foos/${name}?foo=bar&bar=foo
I think objects are better than raw string for query params because we can do things like this:
{ query: Object.assign({ foo: 'bar' }, { bar: testBar() ? 'foo' : null }) }
from react-refetch.
Moved discussion of transform functions to #21
from react-refetch.
I've been thinking about this, and I've decided to decline on this feature for the following reasons:
- The query is part of the URL. Having it be in a separate attribute can lead to confusion.
- It requires the use of request object syntax. The URL string request syntax should always be preferred for simplicity.
- I agree that declaring the query params as an object/hash is good (I do this myself), but I think that converting it to a query string is something that should be done by an explicit function. We could provide something like this in this library, but I'm sure there are several existing libraries that already provide such a facility (e.g. jQuery's
$.param()
), so I don't think there would be much value in implementing another one. ES6 string templates/interpolation make this even nicer to use to include in a string.
from react-refetch.
Related Issues (20)
- Identity requests meta does not have component HOT 1
- Accessing the response body in case of reject HOT 2
- Posting data and having it return as a promise HOT 5
- impossible to update my props into react-refetch HOT 1
- Update Lifecycle Hooks for Future Async Rendering HOT 3
- skip/disable/remove fetch config conditionally HOT 4
- Doesn't support SSR HOT 5
- [idea] useRefetch HOT 5
- Refresh POST method request doesn' work HOT 1
- [Typescript] Type of "body" attribute must be string? and not object? on the Mapping interface
- Can you retry a failed request from within render? HOT 1
- Typings problem with PromiseStateMapping/FunctionMapping HOT 1
- Pass this.state.data to then(), catch(), andThen() and andCatch() functions for more powerful side effects HOT 2
- Override default behavior on failure of fetch with refreshInterval HOT 1
- Typescript types seem not to work properly HOT 9
- react 16.9, Warning: componentWillMount has been renamed, and is not recommended for use HOT 2
- Fetch rejected but reason empty HOT 2
- Example in README cannot be compiled in TypeScript HOT 1
- Is it possible to use a callback of a request? HOT 4
- Support for react@17 HOT 1
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 react-refetch.