React-Redux - 创建搜索过滤器[关闭]

2023-12-01

我需要帮助在我的应用程序中制作搜索过滤器。它是一个简单的应用程序,用于学习目的。

目标是创建一个搜索过滤器。我有state在 search_bar 容器中,我认为我需要将其作为道具传递给我的 work_list 容器。但我不知道该怎么做。从那个阶段开始,我将把它变成这样。

工作列表.js

renderWork() {

    let filteredWorks = this.props.works.filter((work) => {
      return work.title.indexOf(this.state.init) !== -1;
    }
    );


    return filteredWorks.map((work) => {
      return (
        <tr>
          <td>{work.title}</td>
        </tr>
      );
    });
  }

不知道逻辑对不对。需要帮忙。

app.js

import React, { Component } from 'react';
import SearchBar from '../containers/search_bar';
import WorkList from '../containers/work_list.js';

export default class App extends Component {
  render() {
    return (
      <div>
        <SearchBar/>
        <WorkList/>
      </div>
    );
  }
}

search_bar.js

import React, { Component } from 'react';

export default class SearchBar extends Component {

  constructor(props) {
    super(props);
    this.state = { init: '' };
    this.onInputChange = this.onInputChange.bind(this);
  }

  onInputChange(event) {
    this.setState({ init: event.target.value });
  }

  onFormSubmit(event) {
    event.preventDefault();
  }
  render() {
    return (
      <form
        onSubmit={this.onFormSubmit}
        className="input-group">
        <input
          className="form-control"
          placeholder = "Procurar Trabalho"
          onChange={this.onInputChange}
          value={this.state.init} />
        <span className="input-group-btn">
          <button type="submit" className="btn btn-secondary">Pesquisar</button>
        </span>
      </form>
    );
  }
} 

工作列表.js

import React, { Component } from 'react';
import { connect } from 'react-redux';
import { fetchWork } from '../actions/index';

class WorkList extends Component {

  renderWork() {
    return this.props.works.map((work) => {
      return (
        <tr>
          <td>{work.title}</td>
        </tr>
      );
    });
  }

  render() {
    return (
      <table className="table table-hover">
        <thead>
          <tr>
            <th>Nome</th>
          </tr>
        </thead>
        <tbody>
          {this.renderWork() }
        </tbody>
      </table>

    );
  }
}

function mapStateToProps(state) {
  return {
    works: state.works
  }
}

export default connect(mapStateToProps)(WorkList);

我的减速机

减速器_work.js

export default function () {
  return [
    { title: 'Mirististica' },
    { title: 'Vet' }
  ];
}

index.js

import { combineReducers } from 'redux';
import MostrarTrabalhos from './reducer_work';

const rootReducer = combineReducers({
    works : MostrarTrabalhos
});

export default rootReducer;

谢谢 !


您的代码似乎缺少 Redux 工作的一些关键元素。当您的搜索输入发生变化时,您需要分派 Redux 操作,从而更新存储。现在你只是设置本地状态SearchBar当输入改变时。其次,你的减速器不会修改状态,它总是返回相同的数组。

沿着这些思路。

您的操作文件可能如下所示:

export const SEARCH = 'SEARCH';

export function search(value) {
  return {type: SEARCH, value};
}

那么你的减速器可能看起来像这样:

import {SEARCH} from './actions';

const initialState = {contents: ['Mirististica', 'Vet'], value: '', works: []};

export default function reducer(state = initialState, action) {
  switch(action.type) {
    case SEARCH: {
      const {value} = action;
      const works = state.contents.filter((val) => val.includes(value));
      return {...state, value, works};
    }
    default:
      return state;
  }
}

然后在你的SearchBar:

import React, {Component} from 'react';
import {connect} from 'react-redux';
import {bindActionCreators} from 'redux';
import {search} from './actions';

class SearchBar extends Component {
  render() {
    const {search, value} = this.props;

    return (
        <input
          className="form-control"
          placeholder = "Procurar Trabalho"
          onChange={(e) => search(e.target.value)}
          value={value} />
    );
  }
} 

function mapStateToProps({works}) {
  return {value: works.value};
}

function mapDispatchToProps(dispatch) {
  return bindActionCreators({search}, dispatch);
}

export default connect(mapStateToProps, mapDispatchToProps)(SearchBar);

Your WorkList组件只需要监听更改works在 Redux 商店中。

import React, { Component } from 'react';
import { connect } from 'react-redux';

class WorkList extends Component {
  render() {
    const {works} = this.props;

    return (
      <table className="table table-hover">
        <thead>
          <tr>
            <th>Nome</th>
          </tr>
        </thead>
        <tbody>{works.map((work) => <tr key={work}><td>{work}</td></tr>)}</tbody>
      </table>
    );
  }
}

function mapStateToProps({works}) {
  return {
    works: works.works
  }
}

export default connect(mapStateToProps)(WorkList);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React-Redux - 创建搜索过滤器[关闭] 的相关文章

随机推荐

  • TYPO3 StoragePid 和当前

    我构建了一个简单的注释 extbase 扩展 我想将其与打字稿一起包含在项目扩展 也是 extbase 中 项目扩展中的流畅代码如下所示
  • UITableViewCell 重用良好实践

    UITableViewCell tableView UITableView tableView cellForRowAtIndexPath NSIndexPath indexPath static NSString CellIdentifi
  • React.js 中刷新时丢失 useState 值

    我正在发送一个id from ProductListing组件 我收到了id using useParams in ProductDetail成分 在ProductDetail组件我正在使用 find 方法查找一个对象 然后将其设置为sin
  • 如何测量图像中的环境光水平?

    我正在考虑制作一个应用程序 使用相机来测量拍摄图像时存在的光量 一些条件行为会根据存在的光线量而发生 即 如果看起来很黑 则显示一条消息 看起来像睡觉时间 我知道这对于由于曝光等原因而存在的实际光量来说是一个相当糟糕的测量 但它不需要非常准
  • ReactJS - 使用重定向组件传递道具

    你应该如何传递 propsRedirect组件而不将它们暴露在 url 中 像这样
  • SFU 的特殊 CUDA 双精度三角函数

    我想知道我将如何使用 cos x 和分别 sin x 在带有 CUDA 的内核代码中 我在 CUDA 手册中查找到有这样一个设备函数 但是当我实现它时 编译器只是说我无法调用设备中的主机函数 然而我发现有两个姐妹函数cosf x and c
  • Nodejs多列独特mongoose的组合

    客观的 为两列创建唯一性 我尝试了什么 这是我的架构 var mongoose require mongoose location table Schema var locationSchema new mongoose Schema lo
  • Leaflet GeoJSON 是否可以在到达目的地之前裁剪线要素?

    有没有一种简单的方法可以缩短 GeoJSON 图层上的线条 我有一条线 它从 A 点到 B 点 我希望这条线在标记的半径附近停止 那可能吗 有点像从线路终点 起点的偏移量 这是一个例子 我有 50 x 50 的图标 但半透明 参见图片 并且
  • getIntent.getExtras.getString() 中的 null 值

    这是我在第一个活动中的代码 Intent i new Intent this OtherScreen class i putExtra id1 first i putExtra id2 second startActivity i 其中第一
  • 使用仅具有 id 值的实体保存外键

    如果我有两个休眠实体 例如 Entity class Company Id Integer id String name Entity class Person Integer id String name ManyToOne Compan
  • C++ 中的静态构造函数和致命错误 LNK1120: 1 无法解析的外部

    首先 我可能应该让你知道我绝不是一名程序员 我只是为了一项家庭作业而这样做 所以如果可能的话 我将需要一个非常详细的解释 我目前有一个 Node 类 用于存储点的坐标 除此之外 我想要用它做的是根据计数器为每个不同的 Node 对象分配一个
  • 在 R 中的 read.csv 中指定 colClasses 时出现问题

    我试图在 read csv 中指定 colClasses 以尝试加快 csv 文件的读取速度 但是 我遇到了以下问题 假设我有一个名为 t csv 的文件 a b x 0 然后 如果我在 R 中运行以下命令 data lt read csv
  • 客户端-服务器 Java GUI:读/写导致程序冻结

    我正在用 Java 编写客户端 服务器程序 包括 GUI 我在客户端有以下代码 public class SBListener implements ActionListener public void actionPerformed Ac
  • leetcode 的 Java 4sum 实现

    leetcode 的问题陈述是这样的 给定一个由 n 个整数组成的数组 S S 中是否存在元素 a b c 和 d 使得 a b c d target 找到数组中所有唯一的四元组 给出目标的总和 Note Elements in a qua
  • 如何继承带有模板的类? [复制]

    这个问题在这里已经有答案了 为什么下面的方法可以正常工作 class a public int n class b public a public b n 1 int main 但这不起作用 template
  • 实现查找表

    我正在开发一个自定义数据结构 目前正在进行 beta 测试过程 数据将存储在一个数组中 并且该数组可以表示为 4D 2D 和 1D 数组 这三个数组在联合中声明 因为它代表相同的内存寻址 这是给我的班级的声明 一些类 h ifndef So
  • Java 2012-006 更新破坏了 xCode 上传

    这与这个问题相关无法提交申请 然而 在 Apple 最近的 Java 更新 删除了 Web 插件 之后 Oracle 立即发布了 Java 7 的更新 现在 xcode 无法再上传 上传到 iTunes Store 时发生错误 并且旧的修复
  • 使用 Python 请求的异步请求

    我尝试了文档中提供的示例请求库对于蟒蛇 With async map rs 我得到了响应代码 但我想获取所请求的每个页面的内容 例如 这不起作用 out async map rs print out 0 content Note 下面的答案
  • Java Keylistener 没有打开窗口?

    我正在尝试用 Java 创建一个自动点击器 这是我所知道的语言 而且我刚刚学习了线程 我想让小程序在它自己的窗口中打开 而不是在网页上 并且我希望能够使用空格键启动和停止程序而不选择窗口 以便我可以在另一个程序上使用自动点击器并能够停止它而
  • React-Redux - 创建搜索过滤器[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我需要帮助在我的应用程序中制作搜索过滤器 它是一个简单的应用程序 用于学习目的 目标是创建一个搜索过滤器 我有state在 search bar 容器中 我认为我需要将其作为道具传递给