Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在ReactJS中,有没有一种方法可以过滤正在迭代的渲染结果?_Node.js_Reactjs_React Jsx - Fatal编程技术网

Node.js 在ReactJS中,有没有一种方法可以过滤正在迭代的渲染结果?

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} ) }) } 我希望有一个输入字

在AngularJS中,您可以使用“过滤器”缩小ng重复的结果范围,如下所示:


目前,我正在使用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。我只是好奇性能,如果
博客
是一个大对象,或者
博客
有太多项目?我只是好奇性能,如果
博客
是一个大对象,或者
博客
有太多项目?