【问题标题】:how can I handle variables reacts as variable - property?我如何处理变量作为变量 - 属性的反应?
【发布时间】:2021-02-11 22:15:54
【问题描述】:

我正在尝试根据我的端点 API 组织我的代码顺序以将 feed 处理为 feed.*,但是 react 不允许我直接将函数发送到组件中,但我想要类似于 feed.results, feed. count 的东西

const [initialized, setIntialized] = useState(false);  
const [feed, setFeed] = useState([]);
const browserFeed = async () => {  
    const response = await browse();
    setFeed(response.results);  
    setIntialized(true);  
};

useEffect(() => {  
    if (!initialized) {  
    browserFeed();  
    }  
}); 


export const browse = () =>  {
    return api.get('xxxxxxxx')
    .then(function(response){
      return response.data // returns .count , .next, .previous, and .results
    })
    .catch(function(error){
      console.log(error);
    });
  }

  <div className="searched-jobs">
  <div className="searched-bar">
    <div className="searched-show">Showing {feed.count}</div>
    <div className="searched-sort">Sort by: <span className="post-time">Newest Post </span><span className="menu-icon">▼</span></div>
  </div>
  <div className="job-overview">
    <div className="job-overview-cards">
      <FeedsList feeds={feed} />
      <div class="job-card-buttons">
        <button class="search-buttons card-buttons-msg">Back</button>
        <button class="search-buttons card-buttons">Next</button>
      </div>
    </div>
  </div>
</div>

【问题讨论】:

  • 你想每次都用不同的url调用browse。不确定我是否理解问题所在。
  • 没错,但目前设置为api.get(response.next)不会在浏览器中更新
  • 这里的目标是获取每页提要。当你点击next来获取第2、3、4页?基本上是分页,你希望 url 是 url.com/feed?page=5 ?
  • 就是这样

标签: reactjs axios


【解决方案1】:

如果您要处理的是分页,这是一种解决方案:

async function fetchFeed(page) {
  return api.get(`https://example.com/feed?page=${page}`);
}

const MyComponent = () => {
  const [currentPage, setCurrentPage] = useState(1);
  const [feed, setFeed] = useState([]);

  // Fetch on first render
  useEffect(() => {
    fetchFeed(1).then((data) => setFeed(data));
  }, []);

  // Update feed if the user changes the page
  useEffect(() => {
    fetchFeed(currentPage).then((data) => setFeed(data));
  }, [currentPage]);

  const isFirstPage = currentPage === 1;

  return (
    <>
      <FeedsList feeds={feed} />
      {isFirstPage && (
        <button onClick={() => setCurrentPage(currentPage - 1)}>Back</button>
      )}
      <button Click={() => setCurrentPage(currentPage + 1)}>Next</button>
    </>
  );
};

【讨论】:

  • 如何将data 发送回 feedlist 组件 {feed} ?
  • 我们目前正在向FeedsList发送data。如果您在useEffect 内部看到我们正在获取提要,然后调用setFeed 将该数据添加到状态feed。然后我们传递feed(与数据完全相同)并将其传递给Feedlist:&lt;FeedsList feeds={feed} /&gt;不确定您是否想要其他东西?
猜你喜欢
  • 2022-01-16
  • 2014-09-22
  • 2016-11-19
  • 2021-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-12
相关资源
最近更新 更多