在反应中选择选择标签的selectedOption的正确方法是什么

时间:2020-04-03 11:41:40

标签: reactjs select onchange addeventlistener option

我正在尝试根据以下方法实现电话选择器

import React, { Component } from 'react';
import './component_style/telinput.css';
export class telinput extends Component {
    render() {
         const selectCountryChange = ({target}) => {
        const img = document.querySelector('#img');
        const select = document.querySelector('#country');
        const tel = document.getElementById('tel');

        let prevVal = select.value; 

        if(tel.value) tel.value = `${select.value}${tel.value}`;
        else tel.placeholder = `${select.value}${tel.placeholder}`;


        const reg = new RegExp(`(^${prevVal} )`);
        if (reg.test(target.value)) tel.value = tel.value.replace(reg, target.value);
        else tel.value = `${select.value}${target.value}`;




        if(tel.value) tel.value = `${target.value}${tel.value.replace(reg, '')}`;
        else tel.placeholder =  tel.placeholder.replace(reg, target.value);
        prevVal = target.value;


        img.src = `https://flagpedia.net/data/flags/h80/${this.selectedOptions[0].dataset.countrycode.toLowerCase()}.webp`


    }

        return (
            <div>
                <div className="tel-input">
                    <div className="tel-mechanism">
                        <div className="select-box">
                            <img
                                src="https://raw.githubusercontent.com/MeRahulAhire/country-calling-code-html/master/phone_icon.png"
                                alt=""
                                id="img"
                            />
                           <select id="country">
                              <option data-countryCode="IN" value="91">India</option>
                              <option data-countryCode="US" value="1">US</option>
                              <option data-countryCode="GB" value="44">UK</option>
                           </select>
</div>
                        <div className="input-box">
                            <input type="tel" placeholder=" 956 826 4457" alt="" id="tel" />
                        </div>
                    </div>
                </div>
            </div>
        );
    }
}

export default telinput;

但是我得到了这个错误:

TypeError: Cannot read property '0' of undefined
selectCountryChange
C:/Users/Rahul/Desktop/collegefacemash/src/form/components/telinput.js:20
  17 |      else tel.placeholder = tel.placeholder.replace(reg, target.value);
  18 |      prevVal = target.value;
  19 | 
> 20 |      img.src = `https://flagpedia.net/data/flags/h80/${this.selectedOptions[0].dataset.countrycode.toLowerCase()}.webp`;
     | ^  21 |  };
  22 | 
  23 |  return (

我真的不明白为什么当selectedOptions[0]是原生JavaScript属性并且应该可以正常工作时,为什么会发生这种错误。

谁能告诉我该怎么做
谢谢...

0 个答案:

没有答案
相关问题