react-async-bootstrapper icon indicating copy to clipboard operation
react-async-bootstrapper copied to clipboard

Add options to callbacks

Open sjparsons opened this issue 7 years ago • 3 comments

Hi, it would be useful to be able to pass the options object in the asyncBootstrapper down into the individual asyncBootstrap callbacks.

Here's an example.

class Foo extends Component {
      asyncBootstrap(options) {
        // options = {key1: 'val'}
        return true
      }

      render() {
        return <div>{this.props.children}</div>
      }
    }

asyncBootstrapper(app, {key1: 'val'}).then(() => {
  ReactDOM.render(app, document.getElementById('app'))
})

This PR makes that change and also adds a test to assert this funtionality.

sjparsons avatar Mar 20 '18 16:03 sjparsons

Codecov Report

Merging #7 into master will not change coverage. The diff coverage is 100%.

Impacted file tree graph

@@          Coverage Diff          @@
##           master     #7   +/-   ##
=====================================
  Coverage     100%   100%           
=====================================
  Files           1      1           
  Lines           5      5           
  Branches        1      1           
=====================================
  Hits            5      5
Impacted Files Coverage Δ
src/index.js 100% <100%> (ø) :arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 0ec74a4...46327e0. Read the comment docs.

codecov[bot] avatar Mar 20 '18 16:03 codecov[bot]

Hey @sjparsons, thanks for this. It definitely sounds like a useful feature, thanks! I will review it quite soon as I am gonna be doing some updates to this lib. 👍

ctrlplusb avatar Mar 20 '18 17:03 ctrlplusb

Hey @sjparsons, so I have updated this library to use the latest version of react-tree-walker. At the same time I reviewed the options we were passing down to react-tree-walker. I have now exposed the ability to provide a React "context" to your component tree for bootstrapping. This essentially can satisfy your requirements in an alternative manner.

e.g.

class Foo extends Component {
  bootstrap() {
     console.log(this.context.myBootstrapSetting)
  }

  render() {
    return <div>foo</div>
  }
}

bootstrapper(<Foo />, null, { myBootstrapSetting: 'what_ever_you_need' })
  .then(() => console.log('done'))

As you can see it's a new third parameter to the bootstrapper.

I think it would be best to keep the secondary options parameter separate and specific to the bootstapper/react-tree-walker configuration.

What do you think?

You may have noticed I am using bootstrap instead of asyncBootstrap. Both work, however, asyncBootstrap will be removed in next major release.

ctrlplusb avatar Mar 21 '18 10:03 ctrlplusb