2 ms·
contextType is a much needed shortcut but I wish instead of this: static contextType = SomeContext they did something like: static contextMap = { for
by thesunny 8y ago
contextType is a much needed shortcut but I wish instead of this:
static contextType = SomeContext
they did something like:
static contextMap = {
form: FormContext,
app: AppContext,
}
as it seems limiting to only allow one context.
In the example above, the context values would be available in this.form and this.app
- danabramov 8y agoThis has been suggested in the RFC discussion (https://github.com/reactjs/rfcs/pull/65 https://github.com/reactjs/rfcs/pull/65). We intentionally didn't do it for several reasons: * It adds extra object allocations on every render which adds up when your project grows * It's harder to express in a type system (e.g. Flow or TypeScript) You can use the low-level Consumer API to read multiple contexts but in this particular shortcut we're not going to support it.
- pcmaffey 8y agoThe other angle to solving this problem would be adding lifecycle methods to React.Context (instead of using render props), which could eliminate the need for multiple contexts. Making Consumer contexts more efficient & composable.
- danabramov 8y agoWe've thought about a spectrum of solutions and plan to present more proposals soon.
- wereHamster 8y ago> It's harder to express in a type system (e.g. Flow or TypeScript) I don't know about flow, but TypeScript is pretty flexible there. With mapped types you should be express anything you need.