【问题标题】:onChange not updating ReactonChange 不更新 React
【发布时间】:2020-04-30 19:51:45
【问题描述】:

过去几个小时我一直在做这个项目,我很确定这最后一个小时将是我的最后一个小时。没有出现错误。我的想法是,当我从下拉列表中选择英雄时,页面会根据我的选择进行更新。我可能有一些没有触发的东西,我没有接受。

import React, {useEffect, useState} from 'react'
import axios from 'axios'
require("regenerator-runtime/runtime");

const App = () => {
    const [hero, selectedHero] = useState(
        'Select a Hero'
    );
    const handleChange = event => selectedHero(event.target.value);
    return(
        <HeroSelect heroSelect={hero} onChangeHeadline={handleChange} />
    );

};
const HeroSelect = ({heroSelect, onChangeHeadline}) => {
    const [data, setData] = useState({heroes: []});
    useEffect(() => {
        const fetchData = async () => {
            const result = await axios(
                'https://api.opendota.com/api/heroStats',
            );
            setData({...data, heroes: result.data});
        };
        fetchData();
    }, []);
    return (
        <div>
            <h1>{heroSelect}</h1>
            <select>
                {data.heroes.map(item => (
                    <option key={item.id} value={heroSelect} onChange={onChangeHeadline} >
                        {item.localized_name}
                    </option>
                ))}
            </select>
        </div>
    )
};
export default App

【问题讨论】:

    标签: reactjs axios


    【解决方案1】:

    在Select 标签上定义您的onChange={onChangeHeadline},而不是在option 标签上

             <select onChange={onChangeHeadline}>
               {data.heroes.map(item => (
                <option key={item.id} value={item.localized_name}>
                 {item.localized_name}
                </option>
                ))}
             </select>
    

    【讨论】:

    • @4156 没有朋友,这只是错误。如果答案对您有帮助,请接受/投票。
    【解决方案2】:

    您应该在select 标记本身上触发您的onChange 事件。

    <select onChange={onChangeHeadline} >
    .....
    .....
    </select>
    

    【讨论】:

    • 你是个传奇!
    • 哈哈...不,兄弟...我不是,但您可以投票并接受答案。快乐编码:)
    【解决方案3】:

    我认为您没有在选择上声明 onChange。

    【讨论】:

      【解决方案4】:

      使用此方法:

      <select id="lang" onChange={this.change} value={this.state.value}>
      <option value="select">Select</option>
      <option value="Java">Java</option>
      <option value="C++">C++</option>
      </select>
      

      【讨论】:

        猜你喜欢
        • 2020-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-03
        相关资源
        最近更新 更多