Skip to content

Instantly share code, notes, and snippets.

@gaearon
Created March 1, 2018 22:49
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save gaearon/376cfa2776d59cae8bc6d28402f1fd3c to your computer and use it in GitHub Desktop.
Save gaearon/376cfa2776d59cae8bc6d28402f1fd3c to your computer and use it in GitHub Desktop.
const translationFetcher = createFetcher(async (text) => {
const res = await fetch(`${API_URL}?key=${API_KEY}&text=${text}&lang=en-ru`);
await new Promise(resolve => setTimeout(resolve, 1000));
return (await res.json()).text;
});
function Translate(props) {
if (!props.text) {
return null;
}
return (
<b>{translationFetcher.read(props.text)}</b>
);
}
export default class App extends PureComponent {
state = {
input: 'hello',
readyInput: ''
};
render() {
return (
<>
<input
value={this.state.input}
onChange={e => {
this.setState({ input: e.target.value });
this.deferSetState({ readyInput: e.target.value });
}}
/>
<br />
<Placeholder
delayMs={3000}
fallback={<b>translating...</b>}
>
<Translate text={this.state.readyInput} />
</Placeholder>
</>
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment