From c1d62c7aebc435f720016126bbadeea7e8ba36d1 Mon Sep 17 00:00:00 2001 From: irakli Date: Sat, 22 Dec 2018 17:59:43 +0400 Subject: [PATCH 1/3] Added recursive version. --- connectContextRecursive.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 connectContextRecursive.js diff --git a/connectContextRecursive.js b/connectContextRecursive.js new file mode 100644 index 0000000..58bf3a4 --- /dev/null +++ b/connectContextRecursive.js @@ -0,0 +1,22 @@ +import React from 'react' + +function recursiveConsume(Consumers, Component, props = {}) { + if (!Array.isArray(Consumers)) { + return + } + + const Consumer = Consumers.shift() + + return ( + + { context => ( + Consumers.length === 0 ? + : recursiveConsume(Consumers, Component, Object.assign({}, context, props)) + )} + + ) +} + +export default (Consumer, ...otherConsumers) => Component => props => ( + recursiveConsume([Consumer, ...otherConsumers], Component, props) +) From c4635ceb9de9fc057c90004b8b3bfd3b2e5a67b1 Mon Sep 17 00:00:00 2001 From: irakli Date: Sat, 22 Dec 2018 18:13:58 +0400 Subject: [PATCH 2/3] Added recursive version. --- connectContextRecursive.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/connectContextRecursive.js b/connectContextRecursive.js index 58bf3a4..640f0ac 100644 --- a/connectContextRecursive.js +++ b/connectContextRecursive.js @@ -17,6 +17,4 @@ function recursiveConsume(Consumers, Component, props = {}) { ) } -export default (Consumer, ...otherConsumers) => Component => props => ( - recursiveConsume([Consumer, ...otherConsumers], Component, props) -) +export default (...Consumers) => Component => props => recursiveConsume(Consumers, Component, props) From 7a0fb0791449238ade4d0a51e1c3387c5ae0969e Mon Sep 17 00:00:00 2001 From: irakli Date: Tue, 25 Dec 2018 19:58:28 +0400 Subject: [PATCH 3/3] Fixed problem where second use of recursive connect would leave first parameter empty. --- connectContextRecursive.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connectContextRecursive.js b/connectContextRecursive.js index 640f0ac..e5ededf 100644 --- a/connectContextRecursive.js +++ b/connectContextRecursive.js @@ -17,4 +17,4 @@ function recursiveConsume(Consumers, Component, props = {}) { ) } -export default (...Consumers) => Component => props => recursiveConsume(Consumers, Component, props) +export default (...Consumers) => Component => props => recursiveConsume(Array.from(Consumers), Component, props)