javascript - React 调用组件时如何传递状态(值)?

标签 javascript reactjs

我有一个 React APP,它可以基于代码中内置的“dogs”查询完美地显示来自 Flickr API 的图像 - 这是完成此操作的容器:

import React, { Component } from 'react';
import axios from 'axios';
import apiKey from './config.js';
import Navigation from './Navigation.js';
import Photos from './Photos.js';
import SearchBar from './SearchBar.js';

class Container extends Component {

  constructor (){
    super();
    this.state = {
        imgs:[],
        query: '',
        loading: true
    }
  }

  componentDidMount() {
    this.performSearch();

}

  performSearch = (query = 'dogs') => {
    axios.get(`https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=${apiKey}&tags=${query}&per_page=24&format=json&nojsoncallback=1`)
    .then(response => {
      this.setState({ 
        imgs: response.data.photos.photo,
        loading: false
      });
    })
    .catch(err => {
      console.log('Error happened during fetching!', err);
    });
  }

    render() {
        return (
            <div className="container">
            <SearchBar onSearch={this.performSearch}/>
             <Navigation />
              {
                (this.state.loading)
                ? <p>Loading....</p>
                : <Photos data={this.state.imgs}/>
              }
            </div>
            );
    }
}
export default Container;

我有一个包含三个不同链接的导航栏 - 我想为每个链接调用容器组件 - 为 API 中的查询传递特定值。

例如,如果我的链接是熊、猫和老鼠,我希望相应的链接根据查询词生成正确的 api。

我只是不确定如何利用容器组件传递查询项。放轻松,因为我对 react 有点陌生,但我正在尝试类似的事情

<Container query="bears" /> 

<Container performSearch("bears") />

但我似乎不知道如何传递适当的值。

最佳答案

看起来您想将查询作为 Prop 传递。我首先更新构造函数以接收 props,将它们传递给 super(),并使用它们设置状态的 query 的值属性:

constructor(props) {
    super(props);
    this.state = {
        imgs: [],
        query: this.props.query,
        loading: true
    }
}

接下来,更新 performSearch() 方法以使用状态的 query 属性而不是硬编码的 'dogs' 值:

performSearch = (query = this.state.query) => {

现在您可以像您想的那样将适当的query属性传递给Container:

<Container query="bears" />
<Container query="cats" />
<Container query="mice" />

关于javascript - React 调用组件时如何传递状态(值)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47298309/

相关文章:

javascript - React.js 在父级单击时修改子元素

javascript - 如何调整 react 表中的整个列边框

css - React,每个数组元素的 z 索引

javascript - hCaptcha 在调用时滚动到顶部

javascript - 在 iframe 中获取父值?

javascript - 有什么办法只能在工具提示(Recharts)中显示悬停线?

reactjs - Babel 配置文件在 Lerna monorepo 中不起作用

javascript - 使用 React JS 的 FadeIn 和 FadeOut 效果

javascript - 触发器没有采用事件类

javascript - 修复了标题表,在 IE11(Internet Explorer)中使用 Jquery 滚动时单击 div 滚动条图标时会闪烁。