Node.js 在ReactJS中,有没有一种方法可以过滤正在迭代的渲染结果?
在AngularJS中,您可以使用“过滤器”缩小ng重复的结果范围,如下所示:Node.js 在ReactJS中,有没有一种方法可以过滤正在迭代的渲染结果?,node.js,reactjs,react-jsx,Node.js,Reactjs,React Jsx,在AngularJS中,您可以使用“过滤器”缩小ng重复的结果范围,如下所示: 目前,我正在使用Array.map()在ReactJS中呈现一个数组中的多个项目,我想知道如何准确地复制Angular的ng repeat filter在ReactJS中的功能 这是我目前用来呈现一些博客文章的方法: renderBlogs(){ 返回此.props.blogs.map((blog)=>{ 返回( 作者 {blog.author} 标题 {blog.topic} ) }) } 我希望有一个输入字
目前,我正在使用Array.map()在ReactJS中呈现一个数组中的多个项目,我想知道如何准确地复制Angular的ng repeat filter在ReactJS中的功能
这是我目前用来呈现一些博客文章的方法:
renderBlogs(){
返回此.props.blogs.map((blog)=>{
返回(
作者
{blog.author}
标题
{blog.topic}
)
})
}
我希望有一个输入字段,当输入字段发生变化时,它可以过滤我迭代的结果。是否有任何NPM模块可以帮助解决这一问题,或者是解决这一问题的典型方法
谢谢与Angular不同,React没有自己的原语来做那样的事情,它不是重新发明轮子,而是依赖于JS 在JavaScript中,您可以通过调用
filter
并提供一个函数来创建一个数组,该函数将获取每个单独的项并告诉是否包含它:
[1, -2, 3, -4, 5, -6].filter(x => x > 0) // [1, 3, 5]
过滤器和映射也可以组合使用:
[1, -2, 3, -4, 5, -6].filter(x => x > 0).map(x => x * 2) // [2, 6, 10]
即使从map返回React组件,也不会有任何更改,它仍然是JS filter+map:
return this.props.blogs.filter(blog => {
return true; // place your actual check here
}).map((blog) => {
return (
<div key={blog.id}>
<Link to={`blogs/${blog.id}`}>
<img src={blog.image_url} />
<h1>Author</h1>
<p>{blog.author}</p>
<h1>Title</h1>
<p>{blog.topic}</p>
</Link>
</div>
)
})
返回this.props.blogs.filter(blog=>{
return true;//将实际支票放在此处
}).map((博客)=>{
返回(
作者
{blog.author}
标题
{blog.topic}
)
})
与Angular不同,React没有自己的原语来做类似的事情,它不是重新发明轮子,而是依赖于JS
在JavaScript中,您可以通过调用filter
并提供一个函数来创建一个数组,该函数将获取每个单独的项并告诉是否包含它:
[1, -2, 3, -4, 5, -6].filter(x => x > 0) // [1, 3, 5]
过滤器和映射也可以组合使用:
[1, -2, 3, -4, 5, -6].filter(x => x > 0).map(x => x * 2) // [2, 6, 10]
即使从map返回React组件,也不会有任何更改,它仍然是JS filter+map:
return this.props.blogs.filter(blog => {
return true; // place your actual check here
}).map((blog) => {
return (
<div key={blog.id}>
<Link to={`blogs/${blog.id}`}>
<img src={blog.image_url} />
<h1>Author</h1>
<p>{blog.author}</p>
<h1>Title</h1>
<p>{blog.topic}</p>
</Link>
</div>
)
})
返回this.props.blogs.filter(blog=>{
return true;//将实际支票放在此处
}).map((博客)=>{
返回(
作者
{blog.author}
标题
{blog.topic}
)
})
使用React,解决方案需要更多的Javascript,但不要让这成为一种威慑
有很多方法可以实现您所追求的目标,但我认为您应该使用onChange
hook将文本输入连接到组件的状态或应用程序的状态:
<input onChange={changeHandler} .. />
我还建议将博客文章的标记抽象到它自己的组件中,或者作为这个组件上的一种方法。。。类似于renderBlog(…)
祝你好运 使用React,解决方案需要更多的Javascript,但不要让它成为一种威慑 有很多方法可以实现您所追求的目标,但我认为您应该使用
onChange
hook将文本输入连接到组件的状态或应用程序的状态:
<input onChange={changeHandler} .. />
我还建议将博客文章的标记抽象到它自己的组件中,或者作为这个组件上的一种方法。。。类似于renderBlog(…)
祝你好运 Map为每个条目提供一个函数,因此您可以轻松地在回调中放入一些逻辑,以便仅在元素通过您的条件时返回该元素,或者使用u.filter。与其他未命名的框架不同,React鼓励您使用JavaScript。你应该考虑学习JS的标准库,特别是,这将做(一半)你想在这里。绝对没有理由在混合中添加另一个库
lodash.filter
可以,但前提是您的输入是Object | Array
而不是数组。你知道这个对象是一个数组;无需接触lodash.Map,它为每个条目提供了一个函数,因此您可以轻松地在回调中加入一些逻辑,以便仅在元素通过您的条件时返回元素,或者使用u.filter。与其他未命名的框架不同,React鼓励您使用JavaScript。你应该考虑学习JS的标准库,特别是,这将做(一半)你想在这里。绝对没有理由在混合中添加另一个库lodash.filter
可以,但前提是您的输入是Object | Array
而不是数组。你知道这个对象是一个数组;不需要联系lodash。我只是好奇性能,如果博客
是一个大对象,或者博客
有太多项目?我只是好奇性能,如果博客
是一个大对象,或者博客
有太多项目?