2017-10-20 1 views
0

이것은 무엇을 하려는지 보여주는 예입니다. <MyComponent hello={'Hello World'}/>을 사용하지 않고 MyComponent 클래스에서 소품을 전달하려고합니다. 왜냐하면 MyComponent를 다른 라이브러리에 전달하기 때문입니다.reactjs, 클래스 수준에서 소품을 전달하는 방법

import React, { Component } from 'react'; 

class MyComponent extends Component { 
    render() { 
    const { hello } = this.props; 
    return (
     <div>{hello}</div> 
    ); 
    } 
} 

// this line is wrong 
MyComponent.props = { 
    hello: 'Hello World!' 
} 

<MyComponent /> 

어떻게 반응-REDUX은 this.props.state를 추가 연결하고 구성 요소의 소품에 다른 기능을 매핑입니까? 내 사용자 지정 개체를 구성 요소에 삽입하고 싶습니다.

UpdatedComponent = withMyObject(ComponentToBeWrapped,"Hello"); 
+0

당신이 무엇을 요구하고 있는지 생각해보십시오. 소도시를 지나치지 않고 소품을 전달하고 싶습니다. No : 그건 당신이 React의 방법론을 사용하는 방법이 아닙니다. 귀하의 예제에서'let props = {...}'라고 말한 다음 괜찮 았기 때문에''를 사용하십시오 : 실제로 그렇게하는 것을 원하지 않는 이유는 없습니다 프로그래밍 관점에서 볼 때. –

답변

1

당신은 Higher Order Component

function withMyObject(WrappedComponent,helloText) { 
    return class extends React.Component { 

    render() { 
     return <WrappedComponent {...this.props} hello={helloText} />; 
    } 
    }; 
} 

사용을 작성해야합니다. 나는 좋은 행동이라고 생각한다.

import React, { Component } from 'react'; 

class MyComponent extends Component { 
    render() { 
    const { hello } = this.props; 
    return (
     <div>{hello}</div> 
    ); 
    }headerProp: "Header from props...", 
    contentProp:"Content from props..." 
} 

MyComponent.defaultProps = { 
    hello: 'Hello World!' 
} 

<MyComponent /> 
2

당신은 기본 소품을 설정할 수 있습니다