2017-05-01 118 views
0

“删除”我正在奇怪的错误未捕获的(以诺)类型错误:无法读取属性未定义

另一个回答说有不当的进口做。我曾尝试声明一些方法,如var render_product_url = function()....等等,全部失败。

AddRendering.js

import React from "react" 


export function add_rendering(headers, target_header, rendering_callback) { 
    var new_headers = []; 
    for (let i = 0; i < headers.length; i++){ 
     var this_header = headers[i]; 
     if (this_header == target_header){ 
      var header_object = { 
       title: target_header, 
       render: rendering_callback 
      }; 
      new_headers.push(header_object); 
     } else { 
      new_headers.push(this_header); 
     } 
    } 
    return new_headers 
} 

function render_product_url(val, row) { 
    return (<a href={"http://www.website.com/product/" + row[target_header]} target="_blank">{row[target_header]}</a>) 
} 

export function render_product_url_in_datatable(headers, target_header) { 
    return add_rendering(
     headers, 
     target_header, 
     render_product_url 
    ) 
} 

ThisController.js

import React from "react" 
import { render_product_url_in_datatable } from '../commonutils/AddRendering'; 


render() { 
    .. 
    these_metrics.headers = render_product_url_in_datatable(these_metrics.headers, 'Part Number'); 
    .. 
} 

最不可思议的部分是这个工程:

import React from "react" 


export function add_rendering(headers, target_header, rendering_callback) { 
    var new_headers = []; 
    for (let i = 0; i < headers.length; i++){ 
     var this_header = headers[i]; 
     if (this_header == target_header){ 
      var header_object = { 
       title: target_header, 
       render: rendering_callback 
      }; 
      new_headers.push(header_object); 
     } else { 
      new_headers.push(this_header); 
     } 
    } 
    return new_headers 
} 

// function render_product_url(val, row) { 
//  return (<a href={"http://www.website.com/p/" + row[target_header]} target="_blank">{row[target_header]}</a>) 
// } 

export function render_product_url_in_datatable(headers, target_header) { 
    return add_rendering(
     headers, 
     target_header, 
     function render_product_url(val, row) { 
      return (<a href={"http://www.website.com/p/" + row[target_header]} target="_blank">{row[target_header]}</a>) 
     } 
    ) 
} 

匿名也适用,就像

return add_rendering(
      headers, 
      target_header, 
      function(val, row) { 
       .. 
      } 

我发现相比普通语言这个JS导入语法笨拙,但这是正常的JS。

为什么你能不能用在JavaScript中的文件的其他声明的函数?这是使用ES6和React。谢谢

+1

奇怪的是,你甚至到达那里,因为'target_header'不范围。 – Ryan

+0

我相信这是传递它从'render_product_url_in_datatable(头,target_header)' – codyc4321

+1

@ codyc4321得到,当它里面的'render_product_url_in_datatable'它可以从功能参数得到它,但在你的第一个例子中的其他功能('render_product_url' )在作用域上没有'target_header'。 – MinusFour

回答

1

AddRendering.js要么你没有张贴整个代码(缺少一些进口或东西吗?),或者你忘了,包括target_header作为render_product_url函数中的参数(那是什么val PARAM关系吗?)。

function render_product_url(val, row) { 
    return (<a href={"http://www.website.com/product/" + row[target_header]} target="_blank">{row[target_header]}</a>) 
} 

如果这是一个导入失踪,你不知道如何import这是要走的路:

import target_header from './path/to/target_header'; // in case of a default export 
import {target_header} from './path/to/target_header'; // in case of name export 
相关问题