2016-12-06 3 views
0

을 만들 수는 같은 반응. 그러나, 그것을 기본 방법을하고, 그것을 실행하는 것 같다 않습니다ReactJS 사용하여 스크립트 요소를 만들 수 있습니다 내가의 궁금 스크립트 요소

var script = document.createElement('script'); 
script.src = "./d.js"; 
var div = document.getElementById('button'); 
div.appendChild(script); 

을 그래서, 내가 잘못하고 있어요 디자인, 또는 무언가에 의해, 버그?

편집 : 이것은 중복되지 않습니다. 여기서 문제는 두 사람의 차이점입니다. 두 사람이 왜 똑같이 행동하지 않는지입니다.

+0

의 사용 가능한 복제 [반응하는 스크립트 태그를 추가/JSX] (http://stackoverflow.com/questions/34424845/adding-script-tag-to-react- jsx) – Chris

+0

명확히 아닙니다. 여기서 문제는 두 사람의 차이점입니다. 두 사람이 왜 똑같이 행동하지 않는지입니다. –

답변

0

이것을 확인할 수는 없지만 반응 요소 대신 React 구성 요소를 전달해야한다고 생각합니다. 그것이 작동하지 않는 이유입니다.

class reactScriptElement extends React.Component { 
    ... 
    componentWillMount() { 
    const script = document.createElement("script"); 
    script.src = "d.js"; 
    document.body.appendChild(script); 
    } 
    ... 
} 

ReactDOM.render(reactScriptElement, document.getElementById('button')); 

보통 React.createElement는 반응 성분의 render() 방법에서 복귀하는 데 사용된다. 구성 요소 대신 요소를 전달하기 때문에 요소를 만드는 방식이 작동하지 않습니다.

React.createElement()

올바른 사용 -

class App extends React.Component { 
    ... 
    render() { 
    return React.createElement(MyLabel, {label: "Here is the label prop"}, 
     React.createElement("div", {}, 
     React.createElement("input", {type: "text", value: "And here is a child"}) 
    ) 
    ); 
    } 
}; 
+0

아니요, 렌더링 메서드는 요소가 아니라 요소를 사용합니다 .. vanila JS를 사용하고 있기 때문에 JSX syntex와 혼동하지 마십시오. –

+0

@DanielRahamim Ok. 당신이 대답을 찾길 바랍니다. 행운을 빕니다! – Mihir

관련 문제