키 입력을 기반으로 구성 요소의 상태를 업데이트하고 다른 구성 요소로 전달하려고합니다.키 입력의 개체로 상태 업데이트 [반응]
내가 얻을 keyboardInput()
를 호출하고 올바르게 화살표 키 중 하나를 누를 때 CONSOLE.LOG 수 있습니다, 그러나 나는 반환 된 값이 <p>The current input is: {this.keyboardInput}</p>
일예로 렌더링 할 수 없습니다 return {'Y': 1};
위로 키를 누를 때 아무 것도 나타나지 않는다.
나는 componentWillReceiveProps
기능에 관해서 약간의 이해를 잃어 버렸 으리라 생각하지만, 나는 실망했다.
keyboardInput
이 문자열 값이 아닌 개체를 반환 할 수 있습니까? 그러나 반환 값을 문자열로 변경하더라도 여전히 렌더링 할 수는 없습니다.
무엇이 여기에 있습니까?/JS 여기에 일반적으로 구축 반작용에 대한 몇 가지 오해가있는 것 같은
감사합니다,
class GameBoard extends Component {
constructor(props) {
super(props);
this.state = {
test: {},
};
}
// Captures event from main window
keyboardInput = (e) => {
const code = e.keyCode ? e.keyCode : e.which;
// Change X and Y values
if (code === 38) { //up key
return {'Y': 1};
} else if (code === 40) { //down key
return {'Y': -1};
} else if (code === 37) { // left key
return {'X': 1};
} else if (code === 39) { // right key
return {'X': -1};
}
};
componentWillMount() {
window.addEventListener('keydown', this.keyboardInput);
}
componentWillUnmount() {
window.removeEventListener('keydown', this.keyboardInput);
}
componentWillReceiveProps(nextProps) {
this.setState.test = this.keyboardInput(nextProps);
}
render() {
return (
<div>
<p>The current input is: {this.keyboardInput}</p>
<Ball/>
</div>
)
}
}
class App extends Component {
render() {
const boardStyle = {
'position': 'absolute',
'backgroundColor': '#7f8c8d',
'height': '100%',
'width': '100%',
};
return (
<div>
<header>
<h1 className="App-title">Welcome to Moving Objects</h1>
</header>
<div style={boardStyle}>
<GameBoard/>
</div>
</div>
);
}
}
export default App;
소품이 아래로 전달됩니다 -
내가 말했듯이,이있는 상태의 매우 비공식적 개요는 반응이다. 부모 구성 요소로부터. 그들은 여기에서 무관하다. 너바나에 객체를 반환하는 것과는 반대로 실제로 'keyboardInput' 내부에서 상태를 변경하는 것이 좋습니다. (아무데도). 1. setState()가 사용되는 방법을 찾는다. 2. 키보드 인풋 (keyboardInput) 안에서 수행한다. –