亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

打印過濾后的數據得到不同的結果

打印過濾后的數據得到不同的結果

鳳凰求蠱 2024-01-18 15:57:14
我是 React.js 的新手(使用鉤子),想通過簡單的編碼來學習,我的問題是我正在從 ksngfr.com/something.txt 獲取數據,我從那里獲取的數據在圖片中正如你所看到的(在圖片中我剛剛輸入了1-4,但它是1-50)。出于某種原因,當我在輸入“3”中寫入時,它給了我這個(第一張圖片)。我從互聯網上查了一下并提出了這個解決方案。我想實現這一目標:當用戶在輸入中寫入數字“3”時,它應該轉到數據并檢查數字 3(即 3:95426),然后僅返回該結果而沒有其他內容,例如一個框(數字 3) )和另一個框其值“95426”。英語不是我的母語,抱歉有錯誤我正在獲取的數據:我的代碼:function App() {  const [data, setData] = useState([]);  const [searchResults, setSearchResults] = useState([]);  const [searchTerm, setSearchTerm] = useState("");  const obj = {};  useEffect(() => {    const fetchData = () => {      let corsAnywhere = "https://cors-anywhere.herokuapp.com/";      let something = "http://ksngfr.com/something.txt";       fetch(corsAnywhere + something)        .then((response) => response.text())        .then((result) => {          const theDataArr = result.replace(/\n/g, " ");          const f = theDataArr.split(" ");          setData(f);        });    };    fetchData();  }, []);  data.forEach((d) => {    var propertyK = d.split(":")[0];    var propertyv = d.split(":")[1];    obj[propertyK] = propertyv;  });  const k = Object.keys(obj);  useEffect(() => {    const results = k.filter((person) =>      person.toLowerCase().includes(searchTerm)    );    setSearchResults(results);  }, [searchTerm]);  console.log(data);  return (    <div>      <input        type="text"        value={searchTerm}        placeholder="Search..."        onChange={(e) => setSearchTerm(e.target.value)}      />      <div>        {searchResults.map((value, index) => (          <div>            <div>              <IndexBox key={index} index={index + 1} />            </div>            <div>              <ValueBox key={index} value={value} />            </div>          </div>        ))}      </div>    </div>  );}export default App;
查看完整描述

1 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

好的,如果提取有效,請嘗試此代碼。


function App() {

   const [data, setData] = React.useState([]);

  const [searchResults, setSearchResults] = React.useState([]);

  const [searchTerm, setSearchTerm] = React.useState("");


  const fetchData = () => {

let corsAnywhere = "https://cors-anywhere.herokuapp.com/";

let something = "ksngfr.com/something.txt";

fetch(corsAnywhere + something)

  .then((response) => response.text())

  .then((result) => {

    const theDataArr = result.replace(/\n/g, " ");

    const f = theDataArr.split(" ");

    setData(f);

  });

  };


  React.useEffect(() => {

fetchData();

  }, [searchTerm]);


  React.useEffect(() => {

if (data.length) {

  const mappedResult = data.map((d) => {

    var propertyK = d.split(":")[0];

    var propertyv = d.split(":")[1];

    return {

      key: propertyK,

      value: propertyv

    };

  });

  const results = mappedResult.filter((each) => each.key === searchTerm);

  console.log("result is: ", results);

  setSearchResults(results);

}

  }, [data, searchTerm]);


  return (

<div>

  <input

    type="text"

    value={searchTerm}

    placeholder="Search..."

    onChange={(e) => setSearchTerm(e.target.value)}

  />

  <div>

    {searchResults.map(({ key, value }, index) => (

      <div>

        <div>{`value is: ${value} and key is: ${key}`}</div>

      </div>

    ))}

  </div>

</div>

  );

}


const rootElement = document.getElementById("root");

ReactDOM.render(

  <React.StrictMode>

    <App />

  </React.StrictMode>,

  rootElement

);

<div id="root"></div> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.3/umd/react-dom.production.min.js"></script>


查看完整回答
反對 回復 2024-01-18
  • 1 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號