https://github.com/testing-library/react-hooks-testing-library export const Foo = ({ bar }) => { const { result, loading, error } = useRequest(bar); if (error) { return <ErrorComponent />; } else if (loading) { return <LoadingComponent />; } return <ResultComponent result={result} />; };This looks reasonably good at a glance, but what about when we have to repeat this pattern for a dozen different requests? You would copy and paste this conditional block to each of those different implementations and in each of them, it would need to be tested on its own.An HoC implementation could resemble something like this:const Foo = ({ result }) => <ResultComponent result={result} />;const withRequest = BaseComponent => ({ bar, ...props }) => { const { result, loading, error } = useRequest(bar); return ( <BaseComponent {...props} result={result} loading={loading} error={error} /> ); };const withError = branch(({ error }) => error, ErrorComponent);const withLoading = branch(({ loading }) => loading, LoadingComponent);export default compose( withRequest, withLoading, withError )(Foo);Prop Mutation
const Result = ({ bar }) => <ResultComponent result={bar} />;const withBar = BaseComponent => ({ foo, ...props }) => ( <BaseComponent {...props} bar={transform(foo)} /> );export default withBar(Result);const ResultComponent = (props) => {const { hello } = propsreturn (<div><h1>{hello}</h1></div>)}ResultComponent.propTypes = {hello: PropTypes.string.isRequired,};const withHello = BaseComponent => (props) => {const { name } = propsconst str = `Hi ${name}`return <BaseComponent hello={str} />}const Hello = withHello(ResultComponent);<Hello name='Joe' />
error on this: fs . writeFile ( fileName , pdfBytes , err => { if ( err ) { console . log ( err . message ) reject ( err . message ) } else resolve ( fileName ) }) #1 It looks like when deployed into Cloud Run it also requires the extra permission "Service Account Token Creator" to run getSignedUrl . Locally for some reason this role is not required. #2 Only the directory /tmp is writable in Cloud Run. So, change the default write location to write into this directory. However, you have to be aware of 2 things: Cloud Run is stateless, that means when a new instance is created, the container start from scratch, with an empty /tmp directory /tmp directory is an in-memory file system. The maximum allowed memory on Cloud Run is 2Gb, your app memory footprint included. In addition of your file and Airflow, not sure that you will have a lot of space. A final remark. Cloud Run is active only when it...
Comments
Post a Comment