当前位置: 首页 > 面试题库 >

Rxjs在React文本输入组件上反跳

徐皓君
2023-03-14
问题内容

我有以下反应成分

<input className={styles.incSrchTextBox} type="text" name="search" placeholder="Search.."
   onChange={this.onChange} />


onChange(e) {
    const newText = e.target.value;
    console.log(newText);
    this.setState({ searchText: newText });
}

我该如何在rxjs上使用反跳功能?


问题答案:

您将需要从更改事件中爬出可观察到的位置(例如使用Subject),然后对此进行反跳。

这是为您提供功能齐全的示例:

class Search extends React.Component {

  constructor(props) {

    super(props);

    this.state = {

      search: '',

      debounced: '',

    };

    this.onSearch$ = new Rx.Subject();

    this.onSearch = this.onSearch.bind(this);

  }

  componentDidMount(){

    this.subscription = this.onSearch$

      .debounceTime(300)

      .subscribe(debounced => this.setState({ debounced }));

  }



  componentWillUnmount() {

    if (this.subscription) {

      this.subscription.unsubscribe();

    }

  }



  onSearch(e) {

    const search = e.target.value;

    this.setState({ search });

    this.onSearch$.next(search);

  }



  render() {

    const { search, debounced } = this.state;

    return (

      <div>

        <input type="text" value={search} onChange={this.onSearch} />

        <div>debounced value: {debounced}</div>

      </div>

    );

  }

}



ReactDOM.render(

  <Search />,

  document.getElementById('root')

);


<script src="https://unpkg.com/rxjs@5.4.0/bundles/Rx.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id="root"></div>


 类似资料:
  • 问题内容: 我正在尝试我的React.js的第一部分,并在很早的时候就陷入了困境…我有下面的代码,该代码将搜索表单呈现为。但是,在搜索框中输入内容无济于事。 大概在通过道具并上下移动时会丢失一些东西,这似乎是一个常见问题。但是我很沮丧-我看不到缺少的东西。 (最终,我会使用其他类型的,但是我只是想让这一类正常工作。) 问题答案: 您尚未将道具放在机箱中。它必须在JSX中。 在文档中充分考虑了将 p

  • 问题内容: 我正在尝试在React组件中加载language.json文件。当我想导入json文件时,第一步出现以下错误。这是错误: 我正在使用webpack,这是配置文件: 并且我已经安装了以下软件包: 这就是我尝试导入文件(ES6格式)的方式: 另外,我检查了json文件格式并进行了验证!那么,您认为问题出在哪里? 问题答案: azium是正确的,需要加载程序,但这是很好的配置: npm命令

  • 我正在使用react,希望输入文本显示内存数据存储中的值,然后在值更改时更新存储,从而触发重新渲染。我看到的问题是,我的输入文本在重读时失去了焦点。我已经尝试设置key属性,覆盖shouldComponentUpdate并返回false,以防止react重新为组件命名,但没有效果。不管怎样,后者似乎不是一个好的长期解决方案。 从文档: 请注意,在未来的React中,可能会将ashidCompone

  • 我想创建一个按钮,根据应用程序的状态更改其文本。我希望旧文本淡出,然后新文本淡入。 这里有一支笔,我在这里用纯JS实现了我想要的东西。

  • 问题内容: 我正在创建一个简单的表格,使用带有redux表格和材料ui的电子反应样板上传文件。 问题是我不知道如何创建输入文件字段,因为材料ui不支持上传文件输入。 关于如何实现这一目标的任何想法? 问题答案: 在结构上比@galki的解决方案更有意义的另一个> = v1.0解决方案。 在> = v1.0中已弃用。我找不到更多信息(可能没有记录?),但是当前的API 为此提供了信息。