创建和使用BLoC
前面我们只是知道了如何定义一个BLoC,但是如果想在应用中使用这个BLoC,就需要将其实例化,并且绑定在组件树上。
创建BLoC
Provider
使用Provider组件可以在组件树中提供一个BLoC:
jorum会在Provider
组件创建的时候实例化一个FooBloc
,并且在Provider
组件销毁的时候销毁掉对应的BLoC实例。
向BLoC的构造函数传参
如果FooBloc
的构造函数是带有参数的,比如:
那么,我们可以使用args
属性向BLoC的构造函数传参:
注意args的类型是一个数组
withProvider
使用withProvider高阶组件可以避免在一些情况下手动创建wrapper组件:
withProvider
的普通使用方式为:
其中a
就是Provider
组件的props(只不过是object而非jsx的表述形式),而b
则是一个react组件。
如果你想根据外围输入的props动态产生Provider
的props,也可以把上式的a
写成一个函数:
并不需要手动实例化
对BLoC实例的维护(创建、销毁)都是由jorum负责的,我们不需要也不应该手动去维护BLoC的实例。
使用BLoC
useBloc
在函数组件中,我们可以使用useBloc
这个hook来获取指定BLoC的实例。
Consumer
在类组件中,我们并不能使用useBloc
,这时就需要通过Consumer
组件来获取BLoC实例了:
Last updated