Javascript 为什么我需要在React/Redux中对对象数组进行字符串化,并在检索后进行解析?
我不确定这是否是正确的方法,但它正在发挥作用。我不确定这是不是React/Redux的问题,或者只是javascript行为的问题 这是我的REDUX操作:Javascript 为什么我需要在React/Redux中对对象数组进行字符串化,并在检索后进行解析?,javascript,arrays,reactjs,redux,react-redux,Javascript,Arrays,Reactjs,Redux,React Redux,我不确定这是否是正确的方法,但它正在发挥作用。我不确定这是不是React/Redux的问题,或者只是javascript行为的问题 这是我的REDUX操作: export const getDetectedPersonList = () => { return (dispatch, getState) => { fetch("http://localhost:8080/detectedPersonsListWS") .then(function(r
export const getDetectedPersonList = () => {
return (dispatch, getState) => {
fetch("http://localhost:8080/detectedPersonsListWS")
.then(function(response) {
if (response.status >= 400) {
throw new Error("Bad response from server");
}
return response.json();
})
.then(function(detections) {
var detected = [{"a":1},{"b":2},{"c":3},{"d":4}];
dispatch({
type : GET_DETECTED_PERSON_LIST,
payload : JSON.stringify(detected)
})
})
}
}
在REACT的表现成分中,我有:
componentDidMount() {
this.props.getDetectedPersonList();
}
render() {
if (typeof this.props.detectedPersonListJson == 'string'){
console.log(this.props.detectedPersonListJson);
var json = JSON.parse(this.props.detectedPersonListJson);
console.log(json); //The array is perfect as created before (detected)
}
检测到的数组显然是模拟的(在现实世界中,我希望有一个REST响应),但我想这说明了一个问题,这不是异步操作的问题。
我最大的问题是,我之前在验证道具,我希望有一个数组,但无法直接发送数组,因为我收到:[object object],并被typeof解释为字符串,但它不是。。。如果我以前没有做过JSON.stringify(检测到),那么在做JSON.parse(检测到)时会出现一个错误
有道理吗?要遵循的最佳实践?非常感谢。您没有,所以可能还有其他问题,比如减速器,您没有包括在内。很明显,现在它将是一个字符串,因为你将它字符串化了。但是没有stringifyint,正如我在问题中所说的那样,它被javascript的typeof函数解释为一个字符串。再说一次:然后还有其他事情发生了。使用
stringify
可以保证它被“解释为字符串”。如果您得到一个硬编码的对象“解释为字符串”,那么您需要包括正在对操作负载执行操作的减速机:如果您发送一个对象,并且它被映射到其他对象,那么其他对象正在发生。React和Redux中绝对没有“自动”功能可以神奇地将有效负载转换为字符串。