React Native에 익숙하며 MobX를 처음 사용하는 사람은 처음이에요. 첫 번째 프로젝트에서 파일간에 동적으로 업데이트하고 변경하는 소품/저장소를 요구할 때만 필요했습니다. 나는 음악의 임의 장르의 이름을 생성하는 응용 프로그램을 구축을 위해 노력하고 https://github.com/Kovah101/GenreGeneratorv1관찰 가능 MobX React Native 내보내기 및 가져 오기
: 여기
는 프로젝트의 GitHub의입니다. 내 메인 파일은 모든 구성 요소를 렌더링하고 작은 console.log를 가지고 난수가 생성되는지 확인합니다. 나는 다음, GenerateButton은 임의의 숫자의 배열을 생성하는onClick
이벤트와 버튼을 렌더링 여기
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View
} from 'react-native';
import
GenreSelector
from './genreSelector';
import GenerateButton from './generateButton';
import styles from '../styles/styles';
import randomStore from './generateButton';
var MainOriginal = React.createClass ({
getInitialState() {
return {
chosenRandoms: [ , , ],
};
},
//used to check Generate button is working
changeRandoms(newRandoms) {
this.chosenRandoms = newRandoms;
console.log('the console log works!');
console.log(this.state.chosenRandoms);
} ,
render(){
return (
<View style={styles.container}>
<Text style= {styles.title}>Genre Generator</Text>
<Text style={styles.h2}>I am listening to</Text>
<View style={styles.genreContainer}>
<GenreSelector store={randomStore}/> {//passing randomStore as a prop to selector
}
</View>
<Text style={styles.h2}>You filthy casual</Text>
<GenerateButton onPress={this.changeRandoms}/>
</View>
);
}
});
module.exports = MainOriginal;
오류를 얻을하지 않습니다 이러한 mainOriginal
에 의해 확인하고 제대로 작동 얻을. 또한 MobX를 사용하여 지속적으로 업데이트되고 genreSelector
최종 파일로 전달되므로 randomNumbers
을 관찰 할 수 있습니다. 임의의 숫자는 3 개 개의 다른 장르의 배열의 크기에 매핑의
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
TouchableHighlight,
Text,
View
} from 'react-native';
import styles from '../styles/styles';
import {observable} from 'mobx';
var GenerateButton = React.createClass({
generateRandoms: function() {
@observable randomNumbers = [Math.random(), Math.random(), Math.random()];
this.props.onPress(randomNumbers);
},
render: function(){
return (
<TouchableHighlight
onPress={this.generateRandoms}
style={styles.generateButton}>
<Text style={styles.generateButton}>Generate!</Text>
</TouchableHighlight>
);
}
});
const randomStore = new GenerateButton();
export default randomStore;
module.exports = GenerateButton;
genreSelector는 각 배열에서 임의의 장르 중 하나와 3 상자, 각 렌더링, 배열을 사용해야합니다. 그러나 나는 'selectedRandoms'에서 예기치 않은 토큰을 얻습니다. 'var'와 'get randomGenres'에서 다시 동일한 것으로 설정하면 이해가됩니다.
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View
} from 'react-native';
import{
genre1,
genre2,
genre3
} from './genres.js';
import styles from '../styles/styles';
import {observer, computed} from 'mobx-react/native';
import randomStore from './generateButton';
const size = [genre1.length, genre2.length, genre3.length];
@observer
class GenreSelector extends Component {
render() {
var chosenrandom = this.props.randomStore.randomNumbers; //accessing the passed state
console.log({chosenrandom});
let randomGenres = [Math.floor(this.chosenrandom[0] * size[0], Math.floor(this.chosenrandom[1] * size[1], Math.floor(this.chosenrandom[2] * size[2]],
//manipulating the passed array -- ERROR AT END OF THIS LINE
return (
<View style={styles.genreContainer}>
<Text style={styles.genreText} >{genre1[randomGenres[0]]}</Text>
<Text style={styles.genreText} >{genre2[randomGenres[1]]}</Text>
<Text style={styles.genreText} >{genre3[randomGenres[2]]}</Text>
</View>
);
}
}
module.exports = GenreSelector;
아무도 내가 뭘 잘못하고 있는지 아이디어가 있습니까? 내가 var
과 get
을 꺼내면 수학 조작 줄 끝에서 오류가 발생합니다. 나는 뭔가를 오용해야합니다. 어떤 도움 주셔서 감사합니다, 내 코드의 더 제공 할 수 있지만 스타일 시트 또는 인덱스 문제가 있다고 생각하지 않습니다.
당신이 당신의 GenreSelector에 this.props.randomStore.randomNumbers''로그 아웃 할 수 : 여기
최종 코드? 필자는 MobX에 익숙하지 않지만, 솔루션을 디버깅했다면, 내가 제일 먼저 보았을 것입니다. –불행히도'var'과'get'을 꺼내서'예기치 않은 토큰'오류를 해결했지만'console.log'는 인식되지 않고 숭고한 파란색으로 강조 표시되므로'.'에 또 다른 오류가 발생했습니다. 'selectedrandom'과'randomGenres'를 render 함수 안에 넣으면 도움이됩니다.'GenreSelector'를 업데이트 하겠지만'randomGenres'의 끝에'Unexpected token'을 받았습니다. – KinectDeveloper23
'콘솔이 보이지 않았습니다. log (chosenrandom)'을 선택하십시오. 이 로그 문이 작동합니까? 다시, MobX에 익숙하지 않은 분들은 주로 redux를 주 (state)로 사용합니다. 그러나 나는 여러분의 상황에있는 경우 소품이 생성자에서 제대로 전달되고 있는지 항상 확인합니다. 왜'this.chosenrandom []'을 사용했는지 확실치 않으므로 selectedrandom이이 범위에서 선언되었으므로'this'를 사용할 필요가 없습니다. –