Skip to content

Commit fc4a7e9

Browse files
committed
fix props getting applied on initial render before aframe ready (fixes #57)
1 parent 09cf679 commit fc4a7e9

5 files changed

Lines changed: 816 additions & 55 deletions

File tree

dist/index.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,14 @@ function doSetAttribute(el, props, propName) {
3232
} else if (props[propName].constructor === Function) {
3333
return;
3434
} else {
35-
el.setAttribute(propName, props[propName]);
35+
if (el.isNode) {
36+
el.setAttribute(propName, props[propName]);
37+
} else {
38+
el.addEventListener('nodeready', function () {
39+
console.log("WAITING");
40+
el.setAttribute(propName, props[propName]);
41+
});
42+
}
3643
}
3744
}
3845

@@ -117,7 +124,7 @@ var Entity = exports.Entity = function (_React$Component) {
117124
value: function render() {
118125
var props = this.props;
119126
var elementName = this.isScene ? 'a-scene' : props.primitive || 'a-entity';
120-
return _react2.default.createElement(elementName, Object.assign({ ref: this.updateDOM }, props), props.children);
127+
return _react2.default.createElement(elementName, Object.assign({ ref: this.updateDOM }), props.children);
121128
}
122129
}]);
123130

package.json

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "aframe-react",
3-
"version": "4.0.2",
3+
"version": "4.0.3",
44
"description": "Build virtual reality experiences with A-Frame and React.",
55
"main": "dist/index.js",
66
"scripts": {
@@ -17,7 +17,8 @@
1717
]
1818
},
1919
"peerDependencies": {
20-
"aframe": "*"
20+
"react": "*",
21+
"react-dom": "*"
2122
},
2223
"devDependencies": {
2324
"aframe": "^0.5.0",
@@ -50,10 +51,6 @@
5051
"sinon-chai": "2.8.0",
5152
"webpack": "^2.3.2"
5253
},
53-
"peerDependencies": {
54-
"react": "*",
55-
"react-dom": "*"
56-
},
5754
"repository": {
5855
"type": "git",
5956
"url": "git+https://github.com/ngokevin/aframe-react.git"

src/index.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,14 @@ function doSetAttribute (el, props, propName) {
1010
} else if (props[propName].constructor === Function) {
1111
return;
1212
} else {
13-
el.setAttribute(propName, props[propName]);
13+
if (el.isNode) {
14+
el.setAttribute(propName, props[propName]);
15+
} else {
16+
el.addEventListener('nodeready', function () {
17+
console.log("WAITING");
18+
el.setAttribute(propName, props[propName]);
19+
});
20+
}
1421
}
1522
}
1623

@@ -78,7 +85,7 @@ export class Entity extends React.Component {
7885
const elementName = this.isScene ? 'a-scene' : (props.primitive || 'a-entity');
7986
return React.createElement(
8087
elementName,
81-
Object.assign({ref: this.updateDOM}, props),
88+
Object.assign({ref: this.updateDOM}),
8289
props.children);
8390
}
8491
}

tests/browser/index.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ suite('<Entity primitive/>', () => {
110110
});
111111
});
112112

113-
test.skip('handles overrides with updating component', done => {
113+
test('handles overrides with updating component', done => {
114114
ReactDOM.render(<Scene><Entity primitive='a-cylinder' geometry={{width: 5}}/></Scene>,
115115
div);
116116
const cylinderEl = div.querySelector('a-cylinder');

0 commit comments

Comments
 (0)