【发布时间】:2019-02-09 21:39:51
【问题描述】:
我正在开发一个 React 组件库,它允许通过将对象数组和 <input/> 作为道具传递给 <SearchFilter/> 组件来进行客户端数据过滤。我想将过滤后的结果返回到一个 separate <SearchResults/> 组件,该组件可以在树的其他位置呈现(即结果组件不必是输入组件的子组件)。
我已经弄清楚了过滤器,但我不确定在 React 中将过滤后的数据发送到 <SearchResults/> 组件的最佳途径。
这就是我想要的结果......
<SearchFilter
data={data}
input={<input type="text" value={value} onChange={this.handleChange}/>}
/>
然后,使用 Render Props 返回数据并映射到返回 JSX,就会有结果组件。像这样的...
<SearchResults
render={data => (
data.map(el => (
<div>
<span>{data.someProperty}</span>
</div>
)
)}
/>
这是我想要实现的,因为我希望允许在树中的一个位置渲染 <SearchFilter/> 组件,并允许在 其他地方 渲染 <SearchResults/> 组件,这样树的组合方式以及视图的呈现方式就具有最大的灵活性。
我研究了 Context API,但似乎需要更多的组件才能成为我的库的一部分,这使我想要实现的目标更加复杂。如果这是解决它的唯一方法,那很好,但我想问问是否有人能想到其他解决方案。
谢谢!
【问题讨论】:
-
某种状态管理系统是不可避免的。不要将 Redux 视为一个过度设计的解决方案,如果您现在是这样认为的。 Redux 有大量样板文件,但是您对整个 Web 应用程序中的数据流的控制是完全值得的。老实说,我什至无法想象在没有 Redux 的情况下制作 React 应用程序
标签: javascript reactjs react-context