2017-03-04 36 views
2

昨天,我正在閱讀有關高階組件的React文檔,並試圖使用它們的一些示例。但是,對我來說,這是行不通的。ReactJS的高階組件錯誤:「未知道具」

這是一個簡單的HOC,我創建的只是包裝另一個組件,看看它是如何工作的。但從一開始,它從來沒有奏效。

import React, { Component } from 'react'; 
export default function (enhacedComponent) { 
    class Authenticate extends Component { 
    constructor(props) { 
     super(props); 
    } 
    render() { 
     return <enhacedComponent {...this.props} />; 
    } 
    } 
    return Authenticate; 
} 

它總是返回我這個錯誤:當我在控制檯檢查HTML元素部分

Warning: Unknown props `location`, `params`, `route`, `router`, `routeParams`, `routes` on <enhacedComponent> tag. Remove these props from the element. 

,我發現實際值這個HOC的回報是<enhacedComponent></enhacedComponent>。所以包裝的組件從來沒有出去!

因此,最終,封裝的組件永遠不會返回。只是一個JSX版本的應該是HOC的論點。

我認爲既然JSX只是另一種語法,並通過簡單的JavaScript是使用{}的獨特方式,我試圖做到這一點,到沒有成功:

<{enhancedComponent} {...this.props }/> 

我真的不知道是什麼要做什麼或我做錯了什麼。我正在使用this HOC reference。我正在使用Webpack 2和webpack-dev-server作爲Windows 10上的工具。

回答

2

React認爲你試圖將這些道具傳遞給DOM元素而不是反應組件,這會給你未知的道具錯誤。 React將較低的駝峯解釋爲DOM元素,因此enhacedComponent應該是EnhacedComponent

更多的信息在這裏: https://facebook.github.io/react/warnings/unknown-prop.html