通过Immutable.js Map对象处理迭代的好方法是什么?这有效:
{stocks.map((stock,key)=>{
return ( <h3>{key}</h3> )
})}
Run Code Online (Sandbox Code Playgroud)
但在控制台中发出警告"warning.js:45警告:使用地图作为子节点尚未完全支持.这是一个可能被删除的实验性功能.将其转换为键控的ReactElements序列/迭代."
这已经在前面讨论了,这个链接提出了一些策略https://github.com/facebook/immutable-js/issues/667但它们对我来说似乎很笨拙.喜欢:
posts.entrySeq().map(o =>
<Post value={o[1]} key={o[0]} />
)
Run Code Online (Sandbox Code Playgroud)
工作但很笨拙的感觉.有更自然的方式吗?
我想用react中的默认图像替换断开的链接.我通常会使用onerror,但它没有按预期工作.具体来说,我得到了"在现有状态转换期间无法更新(例如在内部render)"的重复错误.最终,出现默认图像,但需要很长时间(此错误的许多打印).这是一个非常类似的问题:react.js替换img src onerror.我尝试了这个解决方案(第一个,不使用jQuery),但它导致了所描述的错误.我猜onError必须不断被触发,从而导致不断重新渲染.任何替代解决方案/修复?
import React from 'react';
import { connect } from 'react-redux';
//import AddImageModal from '../components/AddImageModal.js';
import Button from 'react-bootstrap/lib/Button';
//import { getPostsByUserId } from 'actions'
import Posts from '../components/Posts.js';
var Modal = require('react-modal');
require('../../styles/AddImageModal.scss');
import { save_post } from '../actions';
const customStyles = {
content : {
top : '50%',
left : '50%',
right : 'auto',
bottom : 'auto',
marginRight : '-50%',
transform : 'translate(-50%, -50%)'
}
};
var MyWallScreen = React.createClass({
getInitialState: function() …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 React-Leaflet 合并到我的 Create React App 中。我能够在底图上叠加 GeoJSON 数据,但我无法在该图层上注册点击次数。
在调查此问题时,我发现了以下 jsfiddle,https: //jsfiddle.net/n7jmqg1s/6/,它会在单击形状时注册事件,如 onEachFeature 函数所证明的那样:
onEachFeature(feature, layer) {
console.log(arguments)
const func = (e)=>{console.log("Click")};
layer.on({
click: func
});
}
Run Code Online (Sandbox Code Playgroud)
我尝试将其复制并粘贴到我的 React 应用程序中,但在那里不起作用。我唯一改变的是使用 es6 导入而不是 window.React/window.LeafletReact。我不认为这会导致问题,但我认为这是可能的。
我查看了 onEachFeature 函数的参数。在 jsfiddle 中,我得到 2 个参数——特征和图层数据。但是,在我复制的示例中,我得到 3 个参数,其中前两个为空,第三个参数包含一个包含许多内容的对象,包括 (enqueueCallback : (publicInstance, callback, callerName))
我意识到这有点含糊,但我希望这个问题很容易被识别为对 React 或传单的误解。我认为这与我没有传递正确的范围或直接操作 DOM 或其他事情有关。但我不确定。我将不胜感激任何帮助。
这是我的组件代码:
import React from 'react';
import { Map, TileLayer, Marker, Popup, GeoJSON } from 'react-leaflet';
export default class SimpleExample extends React.Component {
constructor() {
super();
this.state = …Run Code Online (Sandbox Code Playgroud)