I just want to give an action to a TR
button but also it will run when i press after Search
button.
Here is my code:
function App() {
const [temperature, setTemperature] = useState("");
const [city, setCity] = useState("istanbul");
const [desc, setDesc] = useState("");
const [name, setName] = useState("");
const [humidity, setHumidity] = useState("");
const [visibility, setVisibility] = useState("");
const [windspeed, setWineSpeed] = useState("");
const [wicon, setWicon] = useState("");
const [lang, setLang] = useState("");
const getWeatherData = () => {
axios({
method: "GET",
url: `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=myapikey&lang=${lang}`,
}).then((response) => {
setTemperature(Math.round(response.data.main.temp - 273.15));
setDesc(response.data.weather[0].description);
setName(response.data.name);
setHumidity(response.data.main.humidity);
setVisibility(response.data.visibility / 1000);
setWineSpeed(response.data.wind.speed);
setWicon(response.data.weather[0].icon);
console.log(response);
}, []);
};
function changeLang(){
if("tr"){
document.getElementById("id01").innerHTML="Nem"
document.getElementById("id02").innerHTML="Görüş Mesafesi"
document.getElementById("id03").innerHTML="Rüzgar Hızı"
}
};
I created function changeLang()
above but it changes immediately.
And here is my code inside return()
return (
<>
<div class="container">
<div class="wc">
<div class="image">
<div className="temp">
{temperature}
<span>°</span>
</div>
<img
className="weatherimg"
alt="image1"
src={`http://127.0.0.1:5500/src/${wicon}.svg`}
/>
</div>
<div class="hum-visib">
<img
alt="humidity1"
className="humidityimg"
style={{ width: "5", height: "5" }}
src="http://127.0.0.1:5500/src/humidity.svg"
></img>
<p id="id01"className="humidity">Humidity {humidity}%</p>
<img
alt="visibility1"
className="visibilityimg"
style={{ width: "5", height: "5" }}
src="http://127.0.0.1:5500/src/visibility.svg"
></img>
<div id="id02" className="visibility">
Visibility {visibility} km
</div>
<img
alt="windspeed1"
className="windimg"
style={{ width: "5", height: "5" }}
src="http://127.0.0.1:5500/src/wind.svg"
></img>
<div id="id03"className="windspeed">Wind Speed {windspeed} km</div>
</div>
<div class="input">
<button class="trbtn" value="tr" onClick={changeLang} >TR</button>
<button class="enbtn" onClick={(e)=> setLang(e.target.value)} value="en">EN</button>
<form id="content" autoComplete="off">
<input
type="text"
name="input"
className="Search-box"
onChange={(e) => setCity(e.target.value)}
/>
<p>Your City {name}</p>
</form>
<button
className="searchbtn"
onClick={() => {
getWeatherData(city);
}}
>
Search
</button>
</div>
<div className="chart">
{/* BURASI CHART ALANI */}
</div>
<div class="days">
<div className="temp">
{temperature}
<span>°</span>
</div>
<div id="summary">{desc}</div>
<div className="temp">
{temperature}
<span>°</span>
</div>
<div id="summary">{desc}</div>
<div className="temp">
{temperature}
<span>°</span>
</div>
<div id="summary">{desc}</div>
</div>
</div>
<div class="weathercard">
<div class="FLEXWEATHER">
<div style={{ fontWeight: "bold", marginTop: "4px" }}>{name}</div>
</div>
</div>
</div>
</>
);
}
So, i want to change language of Humidity,Visibility and Wind Speed when i press TR button then pressing Search button.Think that TR
and EN
buttons are toggle
button.
Advertisement
Answer
You could create a state with a boolean and check whether turkish is set to either true or false. This you could toggle with a button. Once you have that state you can write a simple line in your JSX code to change the content of it, something similar to this:
[turkish, setTurkish] = useState(false)
Then within you JSX code you could use
<p id="id01"className="humidity">{turkish ? Nem : Humidity}</p>
Or you could even declare these strings earlier by storing them in a variable and then using the variable in the jsx code.