Javascript 道具未传递到功能
道具不会传递给子组件。它在打印时显示一个空对象。问题在Javascript 道具未传递到功能,javascript,reactjs,Javascript,Reactjs,道具不会传递给子组件。它在打印时显示一个空对象。问题在News.js文件中。除道具通道外,所有其他功能均正常工作。 道具在App.js中传递到News.js。问题在于将道具传递给子组件 App.js: import React, {useState} from 'react'; import Axios from'axios'; import {v4 as uuidv4} from "uuid"; import './App.css'; import News from '
News.js
文件中。除道具通道外,所有其他功能均正常工作。
道具在App.js
中传递到News.js
。问题在于将道具传递给子组件
App.js
:
import React, {useState} from 'react';
import Axios from'axios';
import {v4 as uuidv4} from "uuid";
import './App.css';
import News from './components/News';
const App = () => {
const [query, setQuery] = useState("");
const [news, setNews] = useState([]);
const APP_KEY = "hidden due to privacy issues";
// const content = "kerala";
const url = `https://gnews.io/api/v3/search?q=${query}&token=${APP_KEY}`;
// GET https://gnews.io/api/v3/search?q=example&token=API-Token
const getData = async () => {
const result = await Axios.get(url)
.then(result=>{
console.log('inside getdata');
setNews(result.data.articles);
console.log(result);
setQuery(" ");
})
.catch(error => {
console.log(error);
})
};
const onChange = e => {
setQuery(e.target.value);
};
const onSubmit = e => {
e.preventDefault();
getData();
};
return (
<div className="App">
<header className="App-header">
<h1>NEWSPAPER</h1>
</header>
<form className="search-form" onSubmit={onSubmit}>
<input
type="text"
placeholder="Search News!"
onChange={onChange}
value={query}
/>
<input type="submit" value="Search"/>
</form>
<div className="news">
{news !== [] && news.map(newsItem =>
<News key={uuidv4()} props={newsItem}/>
// console.log(newsItem)
)}
</div>
</div>
)
}
export default App
export default function Facebook() {
return <News /> // <=========================== here
}
import React,{useState}来自“React”;
从“Axios”导入Axios;
从“uuid”导入{v4 as uuidv4};
导入“/App.css”;
从“/components/News”导入新闻;
常量应用=()=>{
const[query,setQuery]=useState(“”);
const[news,setNews]=useState([]);
const APP_KEY=“因隐私问题而隐藏”;
//const content=“喀拉拉邦”;
常量url=`https://gnews.io/api/v3/search?q=${query}&token=${APP_KEY}`;
//得到https://gnews.io/api/v3/search?q=example&token=API-代币
const getData=async()=>{
const result=等待Axios.get(url)
。然后(结果=>{
log('insidegetdata');
setNews(result.data.articles);
控制台日志(结果);
setQuery(“”);
})
.catch(错误=>{
console.log(错误);
})
};
const onChange=e=>{
setQuery(如target.value);
};
const onSubmit=e=>{
e、 预防默认值();
getData();
};
返回(
报纸
{news!=[]&&news.map(newsItem=>
//console.log(新闻项)
)}
)
}
导出默认应用程序
道具在
App.js
中传递到News.js
。问题是如何将道具传递给子组件。如果您将道具作为props=newsItem
传递,您将在子组件中使用props.props.newsItem
创建News
,而在News.js
末尾没有道具:
import React, {useState} from 'react';
import Axios from'axios';
import {v4 as uuidv4} from "uuid";
import './App.css';
import News from './components/News';
const App = () => {
const [query, setQuery] = useState("");
const [news, setNews] = useState([]);
const APP_KEY = "hidden due to privacy issues";
// const content = "kerala";
const url = `https://gnews.io/api/v3/search?q=${query}&token=${APP_KEY}`;
// GET https://gnews.io/api/v3/search?q=example&token=API-Token
const getData = async () => {
const result = await Axios.get(url)
.then(result=>{
console.log('inside getdata');
setNews(result.data.articles);
console.log(result);
setQuery(" ");
})
.catch(error => {
console.log(error);
})
};
const onChange = e => {
setQuery(e.target.value);
};
const onSubmit = e => {
e.preventDefault();
getData();
};
return (
<div className="App">
<header className="App-header">
<h1>NEWSPAPER</h1>
</header>
<form className="search-form" onSubmit={onSubmit}>
<input
type="text"
placeholder="Search News!"
onChange={onChange}
value={query}
/>
<input type="submit" value="Search"/>
</form>
<div className="news">
{news !== [] && news.map(newsItem =>
<News key={uuidv4()} props={newsItem}/>
// console.log(newsItem)
)}
</div>
</div>
)
}
export default App
export default function Facebook() {
return <News /> // <=========================== here
}
新闻!==[]
始终为真。没有两个物体是相等的。如果你想在news
为空时在那里设置一个守卫来阻止调用map
,你可以使用news.length!==0
:
<div className="news">
{news.length !== 0 && news.map(newsItem =>
<News key={uuidv4()} props={newsItem}/>
)}
</div>
阅读最后三行,你认为Facebook在做什么?注意:
news!==[]
将始终为真<代码>[]!==[]为真,没有两个对象彼此相等。不过,这不太可能是你要问的问题。@Rahul-好眼力!!