ericclemmons / ericclemmons/react-resolver
Using @client and @resolve on the same class causes @resolve to be called twice
- Vorherrschende Sprache
- JavaScript
- Sterne
- 1.6k
- Forks
- 52
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
**Reproduction test case**
```js
import React, {Component} from 'react';
import { resolve, client } from "react-resolver";
import Promise from 'bluebird';
export class SearchPage extends Component {
render() {
console.log("Re-Rendering: ", this.props.user);
return
Prop: {this.props.user}
}
}
// uncomment this and you'll see "Waiting on response" and "Resolving" repeated twice in the console
/*
@client(() => {
return
})
*/
@resolve({
"user": function(props) {
console.log("Waiting on response, ", props);
return new Promise((resolve,reject) => {
setTimeout(() => {
console.log("Resolving");
resolve("ayyyyyy");
}, 5000)
})
}
})
export default class InnerSearchPage extends SearchPage {};
```
**Expected Output**
[with or without server side rendering, eg, React Router switching pages. This is the observed behavior without `@client(...)`]
```
Waiting on response, Object { [abridged] }
Resolving
USER PROP: ayyyyyy
```
**Actual Output**
[with or without server side rendering]
```
Waiting on response, Object { [abridged] }
Resolving
USER PROP: ayyyyyy
Waiting on response, Object { [abridged] }
Resolving
USER PROP: ayyyyyy
```
**Notes**
I'm using server-side rendering, but the behavior is unchanged when I remove `window.__REACT_RESOLVER_PAYLOAD__`.
I am using HOC as a parent of this component.
Some Versions. I don't know how much of this is relevant.
```
"react": "^15.6.1",
"react-dom": "^15.6.1",
"react-redux": "^5.0.5",
"react-resolver": "^3.1.0",
"react-router": "^4.1.1",
"react-router-dom": "^4.1.1",
"redux": "^3.7.0",
```
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Reproduziere das Problem mit dem bereitgestellten SearchPage-Beispiel und vergleiche das Verhalten mit und ohne @client zusammen mit @resolve. Verfolge die Einstiegspunkte von Resolver und Client-Wrapper, um herauszufinden, warum die Anfrage zweimal ausgeführt wird; abgeschlossen ist die Aufgabe, wenn die Logs in beiden Rendering-Modi einen Resolver-Aufruf und eine aufgelöste user-Prop zeigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- javascript, react
- Bereich
- frontend
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100