このlibraryを使用してReactコンテナ内にワードクラウドを作成しようとしています。ワードクラウドは、配列test
を渡すと動作します。Reactのwordcloudのレンダリング
私はapiを呼び出してwordcloudの単語を取得し、それをwordcloudライブラリに渡したいと考えています。以下は、私は、APIからwords
の配列をフェッチし、次にwordcloudライブラリに渡すために使用しているコードです。
function getWords() {
return fetch('http://bio-wordcloud-dev.us-east-1.elasticbeanstalk.com/getWords/?format=json')
.then((response) => response.json())
.then((responseJson) => {
return responseJson;
})
.catch((error) => {
console.error(error);
});
}
クロムで戻り値をデバッグするとき、私は応答値の要素がundefined
ていることがわかります。ここにコンポーネントがあります:
import WordCloud from 'wordcloud'
class WordCloudComponent extends React.Component {
componentWillMount() {
var words = getWords();
var wordList = []
words.then(function(value) {
value.map(function(object){
wordList.push ([object.word,object.weight]);
});
});
this.setState({words: wordList});
}
componentDidMount() {
var canvas = ReactDOM.findDOMNode(this.refs.canvas)
var test = [["foo", 12], ["bar", 6]];
var words = this.state.words;
console.log(words);
console.log(test)
WordCloud(canvas, { list: test, color: "random-dark", shape: "circle", color:"green", wait: 0, backgroundColor:"black"});
}
render() {
return (
<div className={styles.cloudCanvasContainer}>
<canvas ref="canvas"></canvas>
</div>
);
}
}
私のコンソールログには、言葉とテストの両方が単語と重みの配列を含む配列であることが示されています。 React/Promisesを初めて使ったので、何がうまくいかないのか分かりません。誰か説明してもらえますか?
2つの質問: 'responseJson'は返される前に未定義ですか?あなたは 'キャッチ 'なしで試しましたか? –
1)配列です。 2)負の@DamienLeroux – Turtle