当前位置: 首页 > 知识库问答 >
问题:

反应挂钩-重置下拉

胥和悌
2023-03-14
import React, { useState, useEffect } from "react";
import ReactDOM from "react-dom";
import axios from "axios";
import StateSelector from "./StateSelector";
import Footer from "./Footer";

const SelectTesting = () => {
const reqUrl = "https://hn.algolia.com/api/v1/search?query=redux";

const initialStateValue = [{ id: 0, value: " --- Select A State --- " }];
const initialAuthorValue = [" --- Select an Author --- "];

const allowedState = [
  { id: 1, value: "Alabama" },
  { id: 2, value: "Georgia" },
  { id: 3, value: "Missisippi" }
];

const [authors, setAuthors] = useState(initialAuthorValue);
const [allStates, setAllSelected] = useState(initialStateValue);
const [stateSelected, setStateSelected] = useState(initialStateValue[0].value);

let authorComponent = null;

// useEffect to get states
useEffect(() => {
  console.log("Inside effect");
  const stateValues = initialStateValue;
  allowedState.map(sel => {
    stateValues.push(sel);
    return setAllSelected(stateValues);
  });
}, []);

// useEffect to get Authors
useEffect(() => {
  console.log("Inside effect 2");
  axios(reqUrl).then(result =>
    result.data.hits.map(res => {
      initialAuthorValue.push(res.author);
      return setAuthors(initialAuthorValue);
    })
  );
}, []);

authorComponent = (
  <select>
    {authors.map((author, index) => (
      <option key={index}>{author}</option>
    ))}
  </select>
);

const stateSelectionHandler = event => {
  const value = event.target.value;
  console.log(allStates);
  const stateIndex = allStates.findIndex(state => state.value === value);
  console.log(event.target.value, allStates, "index:", stateIndex);
  setStateSelected(event.target.value);
};

const resetClickHandler = () => {
  console.log("reset was clicked");
  setStateSelected(initialStateValue[0].value);
};

console.log("Inside Index.js Main");

return (
  <div>
    <hr />
      <StateSelector
      selectedState={stateSelected}
      allStates={allStates}
      onStateSelection={stateSelectionHandler}
      />
    <hr />
    <label>Author:</label>
    {authorComponent}
   <hr />
   <Footer onResetClick={resetClickHandler} />
  </div>
);
};

const rootElement = document.getElementById("root");
ReactDOM.render(<SelectTesting />, rootElement);

暂时还没有答案

 类似资料:
  • 问题内容: 在带有钩子的React中,更新状态的正确方法是嵌套对象是什么? 一个人怎么会使用到的更新来(附加一个字段)? (改变价值)? 问题答案: 您可以像这样传递新值

  • 我正在尝试新的hooks功能,并坚持认为我的状态没有更新。 实际上,状态已更新(我可以在console.log中看到更新的值,并且我的组件会重新运行useEffect),但是useEffect方法使用我的旧状态,并仅将签名保存给第一个用户,而活动用户在状态中确实发生了更改。 我想过添加useCallback,并将我的方法移动到use效果或组件本身,但我可以设法让它工作。 状态: 这是我的效果: 这

  • 我在React hook中遇到了一些非常奇怪的行为。在下面的代码中(https://codesandbox.io/s/purple-bush-nb5uy?file=/src/index.js): 单击时,我们在控制台中获得以下序列: 我希望: 因为我认为如果React找到setter并在重新渲染后执行以下代码,它会立即重新渲染。此外,我的React应用程序也是如此: 当运行以及值与状态变量的内容不

  • 我正在构建一个应用程序(使用TypeScript),我面临一个问题,该解决方案需要识别不同的子组件的可能性。基本上是这样的: 我已经搜索了一段时间,许多,如果不是所有接受的答案(像这里:只允许反应组件中特定类型的子级),都是使用()。不幸的是,也有人说在生产中可能会缩小,所以我不能依赖它。 我发现的唯一方法是“强制”一个自己的显示名称。基本上,我创建了一个接口,然后为每个应该可以识别的组件扩展它。

  • 我在读《新概念》。我遇到了一条规则,上面说。在这里,他们提供了解释链接。 我明白他们想说什么,但我不能得到确切的原因,比如为什么我不能在if-else块中使用useffect? 还有一种说法 useState每次都是不同的调用,每次都可以返回新的“[state,setState]”,所以这里有什么困难知道谁调用了哪个useState?

  • 使用React钩子(如)的、和生命周期钩子的等价物是什么?