Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找方法在我的react应用程序中不起作用 功能产品屏幕(道具){ 日志(props.match.params.id); constproduct=data.products.find((x)=>x.id==props.match.params.id); 控制台日志(产品); 返回( {product} ); }_Javascript_Node.js_Reactjs - Fatal编程技术网

Javascript 查找方法在我的react应用程序中不起作用 功能产品屏幕(道具){ 日志(props.match.params.id); constproduct=data.products.find((x)=>x.id==props.match.params.id); 控制台日志(产品); 返回( {product} ); }

Javascript 查找方法在我的react应用程序中不起作用 功能产品屏幕(道具){ 日志(props.match.params.id); constproduct=data.products.find((x)=>x.id==props.match.params.id); 控制台日志(产品); 返回( {product} ); },javascript,node.js,reactjs,Javascript,Node.js,Reactjs,在产品的控制台中,它表示未定义 const product=data.products.find((x)=>x._id==props.match.params.id); 使用=而不是=功能产品屏幕(道具){ function ProductScreen(props) { console.log(props.match.params.id); const product = data.products.find((x) => x.id === props.match.params.

在产品的控制台中,它表示未定义

const product=data.products.find((x)=>x._id==props.match.params.id);
使用
=
而不是
=

功能产品屏幕(道具){
function ProductScreen(props) {
  console.log(props.match.params.id);
  const product = data.products.find((x) => x.id === props.match.params.id);
 console.log(product);
  return (
    <div>
      <h1>{product}</h1>
    </div>
  );
}
日志(props.match.params.id); const product=data.products.find(x=>x._id===props.match.params.id); 控制台日志(产品); 返回 {product.name} }

这很好。您可以指定product.name或product.id..

使用
x._id.toString()===match.params.id
您需要确保在data.products和props.match.params.id之间比较相同的数据类型


props.match.params.id的数据类型是字符串。因此,data.products.id也应该是一个字符串。

因为props.match.params.id是字符串,x.id是数字,所以它是未定义的。您应该将props.match.params.id转换为数字

function ProductScreen(props){
   console.log(props.match.params.id);
   const product = data.products.find( x => x._id === props.match.params.id);
   console.log(product);
   return <div>
      <h1>{product.name}</h1>
   </div>
 }
功能产品屏幕(道具){
const id=编号(props.match.params.id);
constproduct=data.products.find((x)=>x.id==id);
返回(
{product}
);
}

产品
是一个对象,它不能被渲染,如果需要渲染匹配对象的某些特定属性,请传递:
{product.someProperty}
data.products打印什么?什么是
数据
?props.match.params.id看起来像什么?如何判断?试试看。它对我有用。看看发生了什么。我只想知道问这个问题的成员是如何做到这一点的?你们测试的数据是什么?当然与OP不一样,因为OP从未展示过他的数据,所以它对您有效,因为您使用的是您自己的数据,设计用于此特定场景。JS中常规equals运算符(
==
)的行为被认为是一个设计缺陷,建议始终使用严格equals(
==
)。您的建议与JS最佳实践相反。
 function ProductScreen(props) {
 const id = Number(props.match.params.id);
 const product = data.products.find((x) => x.id === id);

 return (
  <div>
   <h1>{product}</h1>
  </div>
   );
 }